点符号和括号中的区别javascript中的表示法

我想了解.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"; }; 

当您使用点符号时, key表示对象中的实际属性,不会出现在该对象中。 所以, undefined被返回,这不等于true

使用[]符号时,您正在使用variableskey的名称访问对象中的属性。 所以,这将工作。

例如,

 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尝试使用名称key获取成员),而在下一种情况下, myObj有一个名为myVar的成员( myObj[key]试图获取具有key值的成员) 。

点符号

jslint更喜欢点符号 。

[]符号

这提供了灵活性。 您可以dynamic访问一个variables的成员。

点符号写得更快,读起来更清晰。

方括号表示法允许访问包含特殊字符的属性和使用variablesselect属性。

 <form id="myForm"> <div><label> <input type="checkbox" name="foo[]" value="1"> 1 </label></div> <div><label> <input type="checkbox" name="foo[]" value="2"> 2 </label></div> <div><label> <input type="checkbox" name="foo[]" value="3"> 3 </label></div> </form> 

错误示例:

 var inputs = myForm.foo[]; 

方括号表示法,另一方面,允许:

 var inputs = myForm["foo[]"]; 

由于方括号是string的一部分,因此它们的特殊含义不适用。方括号表示法的第二个优点是在处理variables属性名称时。

 for (var i = 0; i < 10; i++) { doSomething(myForm["myControlNumber" + i]); }