混淆Javascript属性访问器
我不完全明白这一点:混淆Javascript属性访问器,javascript,Javascript,我不完全明白这一点: var one = {}; var two = {}; var three = {}; three[one] = "one"; three[two] = "two"; console.log(three[one]); // Alerts "two" 据我所知,JS需要在括号属性表示法中包含一个字符串。看来JS正在尝试改变: three[one] = "one"; three[two] = "two"; 进入: 两个toString()方法都没有定义,所以它们最终是相
var one = {};
var two = {};
var three = {};
three[one] = "one";
three[two] = "two";
console.log(three[one]); // Alerts "two"
据我所知,JS需要在括号属性表示法中包含一个字符串。看来JS正在尝试改变:
three[one] = "one";
three[two] = "two";
进入:
两个toString()方法都没有定义,所以它们最终是相同的值?
不知道我是否得到了它
var one = {};
var two = {};
var three = {};
three[one] = "one";
three[two] = "two";
最后两行是:
three[object] = "one";
three[object] = "two";
因为一和二都声明为对象
您正在制作的三个对象如下所示:
[object Object] {
[object Object]: "two"
}
实际上,定义了toString方法,并为这两个方法生成相同的字符串(
[object object]
)
varone={};
var-two={};
$('body').append(一个.toString()+'
'+两个.toString())代码>
方法.toString()
来自对象原型。尝试在浏览器控制台中键入({}).toString()
。实际上,您只是在使用键[object]
。。您正在设置值:three[“[对象]”]=“一”代码>,然后将其覆盖为“2”,然后访问被覆盖的值。“[object object]”加上引号,即是。@Josh Crozier感谢您的澄清。看来我的直觉是对的。
[object Object] {
[object Object]: "two"
}