你对此有何看法?
var x = {a: 1}; //=> {a: 1}
var y = Object.keys(x); //=> ['a']
x[y] //=> 1
if y = ['a']
, x[y]
和做一样x[['a']]
, right?
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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)