【发布时间】:2016-05-04 19:04:51
【问题描述】:
在 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 是原始的有关,但希望得到更好的理解。谢谢
【问题讨论】:
-
点路径语法仅适用于以字母(或_)开头且仅包含
/\w/字符的名称 -
这是必要的,因为
.可能不明确。假设您没有一层,而是两层——那么object.4.5会解决什么问题?它会是一个名为4.5的“一级”属性,还是一个名为4的属性,它本身就是一个对象,并且在它下面有一个名为5的属性......?
标签: javascript object dot-operator