Javascript – Ich habe eine Frage zu Objekten. Kann mir jemand helfen, sie zu erklären?
PHP中文网
PHP中文网 2017-06-10 09:48:32
0
2
515

var a={};
var b={key:1};
var c={key:2};
a[b]=3;
a[c]=4;
console.log(a[ b]);
Ich persönlich denke, dass der Inhalt von a[b] 3 sein sollte. Die oben genannten var b und var c sind nutzlos, aber die eigentliche Antwort ist, dass a[c] 4 ist, also kann ich es nicht verstehen . Was ist die Interpretation von Objekten in js und wie wird diese belegt? Ich hoffe, jemand kann es erklären, vielen Dank. . . . . . .

PHP中文网
PHP中文网

认证高级PHP讲师

Antworte allen(2)
黄舟

我猜你的问题是值为什么被覆盖了是吧.
Javascript 中,当通过 [] 访问对象属性时, 方括号中的表达式将会被求值并被转换成一个字符串,调用它的toString方法.
所以:

var a = {};
b={key:1};
console.log(b.toString()); // [object Object]
a[b]=3;
console.log(typeof Object.keys(a)[0]);    // string, 属性名 b 转换成了字符串.

所以 bc 均转换成相同的字符串 [object Object]. 所以再次赋值就会被覆盖.

伊谢尔伦

因为b.toString() 和 c.toString() 都是 [Object object] ,所以就一样啰

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage