我正在努力了解.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"; };
解决方法
当您使用点符号时,键表示对象中的实际属性,不会在该对象中.所以,未定义不等于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]尝试使用键中的值获取成员) .
点符号
[]符号
这提供了灵活性.您可以使用变量动态访问成员.