我一直在使用Javascript中的方括號表示法來創建和調用關聯數組。如何在點符號中使用變量,如方括號表示法
在本例中,我明白方括號表示法允許您使用變量來調用數組中的某個對象。
你會如何在點符號中做這樣的事情?
var item = {};
item['1'] = 'pen';
var x = 1;
console.log(item[x]); // console will show 'pen'
我一直在使用Javascript中的方括號表示法來創建和調用關聯數組。如何在點符號中使用變量,如方括號表示法
在本例中,我明白方括號表示法允許您使用變量來調用數組中的某個對象。
你會如何在點符號中做這樣的事情?
var item = {};
item['1'] = 'pen';
var x = 1;
console.log(item[x]); // console will show 'pen'
不能使用以點表示變量(短使用eval
,你不想要做的)。使用點符號,屬性名稱本質上是一個常量。
myObj.propName
// is equivalent to
myObj["propName"]
如果用數字來訪問你必須數組使用括號:
item[0]
var k = 0;
item[k]
爲
item.0
不起作用(錯誤的語法)。
如果你使用一個字符串
item["key"]
var p = "key";
item[p]
等於
item.key
在後一種情況下
var p = "key";
item.p
會導致錯誤的輸出p
不作爲變量這裏治療。
謝謝,我沒有具體詢問一個數字,我只是沒有想到一個更好的標識符。但是,這也是瞭解數字的好消息。 –
點符號僅限於某些字符...看到this question ......在方括號可以讓你打破限制:
var item = {};
item['very long variable name containing empty spaces ... and dots...'] = 'valid var';
item.1 = 'not valid var'; // will not work;
item['1'] = 'valid var'; // will do just fine...
簡短的回答是:你不能訪問除非您知道酒店的名稱,否則酒店將使用dot notation。
點符號還會限制您可以訪問的屬性名稱,因爲屬性名稱必須是有效的JavaScript標識符。例如,如果您有一個名爲my prop
(或更好,my%prop
)的屬性,則不可能在不使用bracket notation的情況下訪問它,因爲這會導致大多數情況下出現語法錯誤。
Member Operators page on MDN解釋了這一點。
順便說一句:
豈不是有點混亂,以便能夠動態地查找使用點符號屬性?
item.x // is this the property "x" or do I have to look up variable "x"?
感謝您的參考鏈接。是的,現在我想到了,這會讓人困惑。我只是不知道是否有辦法。 –
-1因爲它是錯誤的。看到我的答案。第一行中的'propName'被視爲屬性,而不是變量! – sjngm
@sjngm我不同意。@nnnnnn並不意味着'propName'是一個變量,而是一個屬性的名稱。 –
@zack好吧,然後一個不同的名字會更好。它說「等同於」意味着第一行與第三行完成相同的事情。這不是事實。 – sjngm