在 JavaScript 中,向现有对象添加属性时,如下所示:
var qBacks = {
12: "Namath",
16: "Montana",
19: "Unitas"
};
qBacks["4"] = "Brett Favre"; //Will work!
qBacks.4 = "Brett Favre"; //Will not work!
//but
qBacks.player4 = "Brett Favre"//Will work.
并且,如果我想附加属性 4 来删除名字,我必须使用括号表示法来完成:
qBacks[4] = "Farve"; //Works!
qBacks.4 = "Farve"; //Will not work!
为什么点运算符不能使用数字来动态添加属性或修改值?我猜测这与 typeof 4 是原始类型有关,但希望得到更好的理解。谢谢
最佳答案
对象上的数字键始终会转换为字符串。这是在 ECMAScript 属性访问器 ( §11.2.1 ) 算法的第 6 步中完成的。
这个问题已经得到解答 here
var foo = {};
foo[4] = 'bar';
console.log(foo[4] === foo["4"]); // returns true
关于javascript - 动态地将数字添加为现有对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043977/