美文网首页
Array.prototype.push

Array.prototype.push

作者: 小杰66 | 来源:发表于2021-04-13 08:18 被阅读0次

    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 }
    

    相关文章

      网友评论

          本文标题:Array.prototype.push

          本文链接:https://www.haomeiwen.com/subject/ughtlltx.html