Open LuckyWinty opened 4 years ago
{
'2':1
'3':2,
'4':3,
'length':5,
'splice':Array.prototype.splice,
'push':Array.prototype.push
}
obj有长度,相当于类数组,调用数组的push,会在数组的最后加一项,第一次调用,相当于长度变为3,那么下标为2的那一项被赋值为1,下标是2,当其作为对象的key值的时候,会隐式调用toString方法转为字符串2,则和obj本来有的key '2'相同,原来的key为2的value就被覆盖了。以此类推后面的2个push。
[undefined, undefined, 1, 2, 3]
{ '2':1 '3':2, '4':3, 'length':5, 'splice':Array.prototype.splice, 'push':Array.prototype.push }
obj有长度,相当于类数组,调用数组的push,会在数组的最后加一项,第一次调用,相当于长度变为3,那么下标为2的那一项被赋值为1,下标是2,当其作为对象的key值的时候,会隐式调用toString方法转为字符串2,则和obj本来有的key '2'相同,原来的key为2的value就被覆盖了。以此类推后面的2个push。
其实前面还有两个空位。
// 可以测试看看。
+ [].fill.call(obj, 0)
{
+ '0':0,
+ '1':0,
'2':0,
'3':0,
'4':0,
'length':5,
'splice':Array.prototype.splice,
'push':Array.prototype.push
}