参见英文答案 > JavaScript property access: dot notation vs. brackets? 11个
我试图理解.Notation和[]表示法之间的区别.在我的问题下面,当我使用if(object [key] === true)时,我得到了正确的答案.当我使用if(object.key === true)时它不起作用.有人可以解释为什么它不同.
var myObj = {
one: false,
two: false,
three: false,
four: true,
five: false,
six: false
};
var myFunc = function (object) {
for (var key in object) {
if (object[key] === true) {
return "There is a true value in this object";
} else {
}
}
return "Sorry, there are no true values in this object";
};
解决方法:
使用点表示法时,键表示对象中的实际属性,该属性不存在.因此,返回undefined不等于true.
使用[]表示法时,您将使用变量键中的名称访问对象中的属性.所以,这将有效.
例如,
var myObj = {
myVar : 1
};
for (var key in myObj) {
console.log(key);
console.log(myObj.key);
console.log(myObj[key]);
}
这将打印,
myVar
undefined
1
因为,myObj没有名为key的成员(myObj.key尝试使用名称键获取成员),在下一种情况下,myObj有一个名为myVar的成员(myObj [key]尝试使用key中的值获取成员) .
点符号
[]表示法
这提供了灵活性.您可以使用变量动态访问成员.