2011-12-02 133 views
1

在Javascript中,你可以用一個屬性name創建一個對象是這樣的:訪問和創建對象屬性的首選方法?

var person = { name: "Tucker" }; 

而且這樣:

var person = { "name": "Tucker" }; 

是等效的這兩個?哪一個是首選?

同去與訪問屬性:

person["name"] = "Dale"; 

person[name] = "Dale"; 

Eloquent JavaScript,作者說The part between the brackets can be any expression. It is converted to a string to determine the property name it refers to.

所以,我想直接放在括號內的字符串將被認爲是最佳做法。

最後但並非最不重要的,屬性可以通過使用點符號是訪問:

person.name = "Dale"; 

如果該屬性是一個有效的變量名。使用這個表示法看起來更靈活的括號表示法真的有意義嗎?

+0

使用人。每次我都可以叫;當我需要通過變量名訪問時使用person [name] – malletjo

回答

2

這些都是一樣的,唯一不同的是,如果你的關鍵是保留關鍵字,你需要引號:

var person = { name: "Tucker" }; 
var person = { "name": "Tucker" }; 
var person = { "for": "Tucker" }; //Need quotes here 

訪問時,將適用同樣的規則

person["name"] = "Dale"; //Sets the person object's name attribute to "Dale", the brackets are needed for variables or expressions. 
person.name = "Dale"; //Same operation, different syntax 
person[name] = "Dale"; //Sets the attribute equivalent to the value of the variable name, not necessarily "name" 

在表面上更靈活的括號表示法中使用這種表示法是否有意義?

這完全取決於您或決定項目編碼標準的人。點符號更簡單,讓人聯想到Java/C/C++(如果你喜歡這樣的話)和方括號,正如你所說的那樣,它更加靈活。

2

沒有'最好的方式',它取決於你在做什麼。

var person = { name: "Tucker" }; 

是好的,但如果「名」其實是「名稱用空格」,則需要:

var person = { "name with a space": "Tucker" }; 

對於訪問屬性,除非你在一個是用於在...迴路我會建議點符號:

person.name 

當然你也可以這樣做:

person."name with a space" 

所以做:

person["name with a space"] 
相關問題