动态地将数字作为属性添加到现有对象

时间:2016-01-27 17:21:28

标签: javascript object dot-operator

在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!

为什么点运算符不能使用数字来动态添加属性或修改值?我猜它与4型是原始的,但希望得到更好的理解。感谢

1 个答案:

答案 0 :(得分:1)

对象上的数字键将始终转换为字符串。这是在ECMAScript属性访问器(§11.2.1)算法的第6步中完成的。

已经回答here

var foo = {};
foo[4] = 'bar';

console.log(foo[4] === foo["4"]); // returns true