2013-06-25 56 views
-1

我在這裏讀到堆棧溢出時說這些不相等。那麼區別是什麼呢。有什麼區別myObj.a = b vs myObj [a] = b

發生了什麼事情是在第二種情況下,值被指定爲myObj的屬性。所以如果b ='abc'; 然後myObj.abc現在可用。

我一直認爲同樣的事情,但是當名字是奇怪的人使用[]版本。

+0

語法,但是當名稱具有特殊字符而無法使用點格式時,您需要使用'[]'。也可以使用破折號,句號等參數名稱。 – epascarello

+2

[使用對象](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects)。 –

+1

[JavaScript屬性訪問:點符號與括號?]的副本(http://stackoverflow.com/questions/4968406/javascript-property-access-dot-notation-vs-brackets)和[使用點符號時的不同行爲]符號與括號符號](http://stackoverflow.com/questions/4234777/javascript-different-behavior-when-using-dot-notation-vs-bracket-notation) – Bergi

回答

0

myObj.a=bmyObj[a]=b之間的區別在於,在第一種情況下,您正在訪問對象中名爲a的屬性。在第二個您訪問其是叫a一個可變的屬性。

在另一方面,myObj.a=bmyObj["a"]=b將是等效的。

0

很多,結果將取決於a var值。但["a"]將是相同.a

4

點表示法將標識符即屬性名稱。方括號表示法接受屬性名稱的字符串表示形式。

鑑於var a = "a";然後myObj.a = bmyObj[a] = bmyObj["a"] = b等同。

+0

謝謝,我想我學會了這種方式回來,但直到現在還沒有使用括號。讓我知道我是否正確。括號也用於方法/屬性名稱,而不是以像這樣的字符串開始'obj。['9'] = {};' –

+0

所以如果我這樣做基本上整個程序崩潰:Object.prototype [4] = { ;' –

相關問題