Obj中的属性 - JS

时间:2017-09-06 22:31:46

标签: javascript object

myObj[property]myObj['property']之间有什么区别以及他们访问内容的方式?

var key = 'property';

var myObj = {
  key: [2,3,6,8],
  property: ["matt", "black", "rodel"]
};

使用quotedunquoted属性也有很大差异吗?

3 个答案:

答案 0 :(得分:1)

不同之处在于,您不能obj[property]除非property是一个持有字符串的变量,您可以obj['property']obj[property](属性必须是字符串)或obj.property



var key = 'property';//<<<<<<<<<<<<<<<<<<<<<<
                                      //     ^
var myObj = {                         //     ^
  key: [2,3,6,8],                     //     ^
  property: ["matt", "black", "rodel"]//     ^
};                                    //     ^
console.log(myObj[key]); // key is a string  ^, this is neither myObj.key nor myObj['key']
console.log(myObj['property']);
console.log(myObj.property);
&#13;
&#13;
&#13;

请注意,obj[property]不一定是obj['property']obj.property,它取决于字符串变量property的值,在您的示例中为字符串变量{{1}值为key"property"返回了对象的属性。

答案 1 :(得分:1)

正如评论中已经提到的那样,'property'是一个字符串文字,用作对象键。

现在property可能是变量并具有其他值,例如:

var property = 'key';
myObj[property] === myObj['key']; // true

将是true声明。

通常,最好直接使用对象键,而不是使用array表示法。

// preferred usage
myObj.key;
myObj.property;

// not recommended to use on objects, but only on arrays
myObj['key'];
myObj['property'];

但是如果你的属性是动态的并且你不能预先知道它的值,那么使用数组表示法就可以了:

['key', 'property'].forEach( function( keyName ) {
    console.log( keyName + ' => ' + myObj[keyName] )
} );

答案 2 :(得分:1)

您无意中提供了完美的示例代码:

var key = 'property';

var myObj = {
  key: [2,3,6,8],   // this line does *not* use the key variable!
  property: ["matt", "black", "rodel"]
};

console.log(myObj[key]);   // myObj['property'] -> myObj.property
console.log(myObj['key']); //                      myObj.key

但是请注意,当定义一个Object文字时,对于该键使用引号或不引用没有区别(假设键没有空格等)。

var obj = { "key": 123 };

var obj = { key: 123 };

可以互换。