2012-04-22 49 views
2

可能重複:
JavaScript property access: dot notation vs. brackets?使用'[]'符號訪問JavaScript對象成員而不是點符號的原因是什麼?

我現在正在讀一些開源的JavaScript項目的代碼,我看到他們有時訪問對象屬性一樣person.name但有時他們訪問諸如person['name']

對我來說,點符號對其他問題是非常清楚的。點符號很容易編寫和閱讀,但在源代碼中,我發現它們有時使用點符號有時[]括號符號,我試圖理解它的原因。

可能是什麼原因呢?

回答

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'); 
2

下面是使用括號,我們在屬性名作爲參數傳遞,其中一個很好的理由:

function showProperty(propertyName) { 
    alert(person[propertyName]); 
} 

showProperty('name'); 
showProperty('age'); 

這裏是另一個很好的理由,在這裏我們可以訪問'headers'request的財產使用點符號,但我們可以而不是使用點符號來訪問的'Content-Type'財產,因爲它包含-

request.headers['Content-Type'] = 'text/html'; 
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 
7

首先,它可以是動態的一個字符串:

var key = 'name'; 
person[key]; 

其次,它也支持AREN」其他符號t支持

var key = 'first-name'; 
person[key]; 
相關問題