javascript中点符号和括号符号的区别

javascript中点符号和括号符号的区别,javascript,syntax,brackets,Javascript,Syntax,Brackets,我试图理解.Notation和[]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 =

我试图理解
.Notation
[]
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
尝试获取名为
key
的成员),在下一种情况下,
myObj
有一个名为
myVar
的成员(
myObj[key]
尝试获取名为
key
的成员)

点表示法

[]符号


这提供了灵活性。您可以使用变量动态访问成员。

点表示法写入速度更快,读取更清晰

方括号表示法允许访问包含特殊字符的属性以及使用变量选择属性

<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[]"];
由于方括号是字符串的一部分,它们的特殊含义不适用。方括号表示法的第二个优点是在处理变量属性名称时

for (var i = 0; i < 10; i++) {
doSomething(myForm["myControlNumber" + i]);
}
for(变量i=0;i<10;i++){
剂量测定法(myForm[“myControlNumber”+i]);
}

切勿将变量命名为
对象
在点表示法中,您可以按名称访问键,在括号中按字符串访问键。后者可以是动态的。@thefourtheye,为什么一个变量不应该被命名为object?谢谢。@jstone有一个名为的内置JavaScript对象,因此最好不要使用相同的名称命名变量,即使大小写不同。
for (var i = 0; i < 10; i++) {
doSomething(myForm["myControlNumber" + i]);
}