簡體   English   中英

JavaScript中的對象屬性值

[英]Object Property Value in javascript

在下面的代碼中如何分配屬性值:

var foo = {};
var bar = {};
var obj = {};

obj[foo] = "Nishan";
obj[bar] = "Manis";


console.log(obj[foo]);

為什么給出輸出“ Manis”

var foo = {};
var bar = {};
var obj = {};

obj.foo = "Nishan";
obj.bar = "Manis";

console.log(obj.foo);

Output: "Nishan"

使用“。”聲明對象的屬性之間有什么區別? 和“ []”,例如:obj.far =“ Nish”和obj [far] =“ Nish”

var foo = {};
var bar = {};
var obj = {};

obj.foo = "Nishan";
obj.bar = "Manis";

console.log(obj[foo]);

給未定義

僅因為將對象轉換為字符串,並且對象的字符串表示形式為[object Object] ,否則該對象才可用作鍵,因此您所做的等於

var obj = {};

obj[`[object Object]`] = "Nishan";
obj[`[object Object]`] = "Manis";

console.log( obj[`[object Object]`] ); // returns Manis

所以基本上您要覆蓋鍵/值對,因為foobar的字符串表示是同一回事,它們都轉換為[object Object]

編輯:

在第二個和第三個示例中,您執行類似

var foo = {};

obj.foo = "something";

但是,當您使用點表示法時,可以聲明所需的任何屬性,而對象上的屬性foo與上面聲明的變量foo無關,它們甚至沒有遠程關聯,您也可以這樣做

var foo = {};

obj.didgeridoo = "something";

相關性是相同的,什么都沒有。

使用方括號符號訪問屬性時,必須傳入一個字符串。

foobar都是對象。

默認情況下,將對象轉換為字符串時,將得到類似於"[Object object]"

foo.toString() === bar.toString()所以obj[foo] === obj[bar]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM