![](/img/trans.png)
[英]Why does using jQuery's .append() function with a jQuery object with an element name and an array in it as the single parameter work?
[英]Why does accessing an element in an object using an array as a key work?
你怎么看的
var x = {a: 1}; //=> {a: 1}
var y = Object.keys(x); //=> ['a']
x[y] //=> 1
如果y = ['a']
, x[y]
與x[['a']]
,對嗎?
x[['a']]; //=> 1
x[[['a']]]; //=> 1
x[[[[[[[['a']]]]]]]]; //=> 1
有人可以解釋這里發生了什么嗎? 為什么這樣做?
屬性名稱必須是字符串。 如果嘗試使用數組作為屬性名稱,它將隱式調用其toString()
方法。 這將生成一個字符串,其中包含一個用逗號分隔的值列表。
> var array = ['a', 'b', 'c'];
undefined
> array.toString();
'a,b,c'
如果只有一個值,則沒有逗號。
> var array = ['a'];
undefined
> array.toString();
'a'
@Quentin建議將屬性名稱自動轉換為字符串。 好的,我認為他在這里,但是給出兩個顯式的arr.toString()
示例並沒有真正演示如何使用數組訪問對象的屬性。 我將此內容作為對他帖子的修改。 但是,他回滾了。
無論如何,這更明顯地顯示了imo的隱式行為。
var x = {'a,b,c': 1};
var y = ['a','b','c'];
x[y]; //=> 1
我認為它來自兩個事實:
所以你
["a"]
當用作鍵時,將“投射”到字符串中,
a
甚至
[[[[["a"]]]]].toString() == a // true
所以你
x[y]
結束於
x["a"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.