javascript - valeur de l'objet js
天蓬老师
天蓬老师 2017-05-19 10:33:49
0
6
680
  var obj ={
        name:'nnn',
        age:22,
        job:'worker'
    };
  
    var arr=[
        'name',
        'age',
        'job'
    ];

    for (var i=0 ;i<arr.length;i++){
        document.writeln(arr[i]+':'+obj[arr[i]]);
    };//有值
     for (var i=0 ;i<arr.length;i++){
        document.writeln(arr[i]+':'+obj.arr[i]);
    };//没值,不报错
    

Quelle est la différence entre ces deux-là et quelle est la raison de la situation ci-dessus, aidez-moi à la comprendre ?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(6)
黄舟

Êtes-vous sûr de ne pas signaler une erreur ? Vérifiez les informations de la console
obj.arr[i] Cet appel est erroné
obj.arr n'existe pas, il est égal à undefined
undefined[i] Une erreur se produira certainement


Tout d'abord, obj et arr peuvent utiliser la méthode [] pour obtenir des valeurs :
La différence entre les deux méthodes dans cet exemple est :
obj[arr[i]] prend d'abord arr[i] puis l'assigne à obj[]:

arr[i]==> 'name' ==> obj['name'] ==> 取值成功

obj.arr.[i] consiste à obtenir obj.arr en premier, puis à obtenir [i] via obj.arr :

obj.arr==> undefined ==> undefined[i] ==> 报错
嵌套的由内而外
链式由左往右
淡淡烟草味

L'opérateur crochet peut utiliser le contenu d'une variable chaîne comme nom d'attribut. L'opérateur point ne le peut pas.

var a={
    name:1
}
var str="name";
console.log(a[str])//1
console.log(a.str)//undefined
巴扎黑

L'un est un objet et l'autre est un tableau, qui sont deux structures de données complètement différentes

Vous pouvez utiliser

pour parcourir des objets
for (var i in obj) {
    console.log(obj[i])
}

Quant à la raison pour laquelle vous avez dit qu'aucune erreur n'est signalée plus tard, c'est à cause des trois expressions de la boucle for (les trois séparées par des points-virgules), obj.length est indéfini et faux, donc la boucle ne démarrera pas . De plus, vous pouvez également essayer d'ajouter une longueur à l'objet obj, et le cycle commencera

.
阿神

Ami, une erreur a été signalée...

La raison est :
Utilisez obj[] pour convertir la chaîne entrante en nom d'attribut, c'est-à-dire :
obj['name']==obj.name renvoie vrai
Et la syntaxe par points de obj.'name' ne sera pas automatiquement convertie en obj.name, c'est-à-dire :
obj.'name'==obj.name erreur
Je ne sais pas si je comprends bien.. .

过去多啦不再A梦

Il signalera certainement une erreur, priorité de l'opérateur

为情所困

Imbriqué de l'intérieur vers l'extérieur
Enchaîné de gauche à droite
C'est vrai !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal