Cible : les noms d'attributs js peuvent utiliser des variables
Exemple : objet js, lors de l'attribution d'attributs à l'objet, vous pouvez utiliser la méthode suivante
objet var ;
objet.prop1 = "valeur1";
objet.prop2 = "valeur2";
Vous pouvez également utiliser la méthode suivante :
object.push({prop1:"value1"});
object.push({prop2:"value2"});
Ici, prop1 est utilisé comme nom d'attribut, qui peut être utilisé directement ou entre guillemets, tels que :
object.push({"prop1":"value1"});
Le sens de l'expression est le même, c'est-à-dire que prop1 ne peut être reconnu que comme une constante, même si c'est une variable, cela ne sert à rien, par exemple :
var prop1 = "prop2";
object.push({prop1:"value1"});
Que se passe-t-il lorsque vous accédez à prop2 via un objet de cette manière ? Par exemple :
alert(
object.prop2)
Pas besoin de demander, bien sûr ce n'est pas défini, mais accéder à object.prop1 est "value1"
La raison a déjà été mentionnée. Que les guillemets soient inclus ou non, les attributs sont traités comme des constantes :
arr['js']='jquery';
arr['css']='oocss';
var obj={};
pour(var i dans arr)
{
obj.i=arr[i];
}
alerte(obj.js);
Lecteurs, devinez ce que l'alerte imprimera ?
Bien sûr, ce n'est pas défini.
Devinez encore, qu'est-ce qui sera imprimé si alert(obj.i) ?
Bien sûr que c'est oocss, pourquoi ? Parce que obj n'a désormais qu'un seul attribut i, et à travers deux boucles, le devant de obj.i est écrasé par ce dernier.
S'il y a une demande, vous devez ajouter des attributs de manière dynamique, c'est-à-dire que l'attribut doit également être une variable. Comme dans l'exemple de code ci-dessus, alert(obj.js) n'est pas indéfini, mais jquery Comment faire. le modifier ?
arr['js']='jquery';
arr['css']='oocss';
var obj={};
pour(var i dans arr)
{
obj[i]=arr[i];
}
alerte(obj.js);
C'est aussi simple que cela ! Traitez l'objet obj comme un tableau, qui prend en charge l'utilisation de méthodes similaires aux indices pour attribuer des attributs et des valeurs d'attribut à l'objet. Cependant, l'objet est toujours un objet et obj.length n'existe pas. >