可能重复:
JavaScript property access: dot notation vs. brackets?
我现在正在阅读一些开源的javascript项目代码,我发现他们有时会访问像person.name
这样的对象属性,但有时他们会像person['name']
一样访问。
对我而言,点符号与其他符号相当清楚。点符号很容易写和读,但在源代码中我看到它们有时使用点符号有时[]括号符号,我试图理解它的原因是什么。
可能是什么原因?
答案 0 :(得分:7)
首先,它可以是动态的字符串:
var key = 'name';
person[key];
其次,它还支持其他不受支持的符号
var key = 'first-name';
person[key];
答案 1 :(得分:6)
这是一个用例(具有不可能的属性名称)
var obj = {};
> undefined
obj['first name'] = 'Ivan';
> "Ivan"
obj['first name']
> "Ivan"
obj.first\ name
> SyntaxError: Unexpected token ILLEGAL
obj.first name
> SyntaxError: Unexpected identifier
答案 2 :(得分:2)
这是使用括号的一个很好的理由,我们将属性名称作为参数传递:
function showProperty(propertyName) {
alert(person[propertyName]);
}
showProperty('name');
showProperty('age');
这是另一个很好的理由,我们可以使用点符号访问'headers'
的{{1}}属性,但我们可以不访问request
属性'Content-Type'
使用点符号,因为它包含request.headers
。
-
答案 3 :(得分:1)
在方法中使用此表示法非常有用,例如,您将属性名称作为参数发送。
var Obj = function(){
this.abc = function(){
alert("abc!!!");
};
this.qqq = function(){
alert("QQQ!!!");
};
}
var showAlert = function(param){
var myObj = new Obj();
myObj[param]();
};
showAlert('abc');