点符号和括号中的区别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]); }