Array.prototype.push

2021-04-13  本文已影响0人  小杰66

MDN描述如下

push方法将值追加到数组中。

push 方法具有通用性。该方法和 call()apply() 一起使用时,可应用在类似数组的对象上。push 方法根据 length 属性来决定从哪里开始插入给定的值。如果 length 不能被转成一个数值,则插入的元素索引为 0,包括 length 不存在时。当 length 不存在时,将会创建它。

唯一的原生类数组(array-like)对象是 Strings,尽管如此,它们并不适用该方法,因为字符串是不可改变的。

总结一下push函数就是取length值作为属性来赋值,然后将length属性值加1。

var a = [1];
a.length = 2;
a.push(2);
console.log(a, a.length); // [1,empty,2] 3
var a = [1];
a.length = 0;
a.push(2);
console.log(a, a.length); //[2] 1

如何是作用于类数组没有length属性或属性值无法隐式转换成数字的,会将length属性设为0。

var obj = {
  2: 3,
  3: 4,
  length: 2,
};
Array.prototype.push.call(obj, 1); //length为2 赋值1给key为2的属性
Array.prototype.push.call(obj, 2); //length为3 赋值2给key为3的属性
console.log(obj); //{ '2': 1, '3': 2, length: 4 }
var obj = {
  2: 3,
};
Array.prototype.push.call(obj, 1);
console.log(obj); // { '0': 1, '2': 3, length: 1 }
上一篇下一篇

猜你喜欢

热点阅读