[英]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
所以基本上您要覆蓋鍵/值對,因為foo
和bar
的字符串表示是同一回事,它們都轉換為[object Object]
編輯:
在第二個和第三個示例中,您執行類似
var foo = {};
obj.foo = "something";
但是,當您使用點表示法時,可以聲明所需的任何屬性,而對象上的屬性foo
與上面聲明的變量foo
無關,它們甚至沒有遠程關聯,您也可以這樣做
var foo = {};
obj.didgeridoo = "something";
相關性是相同的,什么都沒有。
使用方括號符號訪問屬性時,必須傳入一個字符串。
foo
和bar
都是對象。
默認情況下,將對象轉換為字符串時,將得到類似於"[Object object]"
。
foo.toString() === bar.toString()
所以obj[foo] === obj[bar]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.