代码之家  ›  专栏  ›  技术社区  ›  Erik Escobedo

如何用javascript编写一个mutator方法?

  •  1
  • Erik Escobedo  · 技术社区  · 14 年前
    Array.prototype.clear = function(){
        this = new Array();
        return true;
    }
    

    那个代码引发了一个 invalid assignment left-hand side 错误。

    我如何在他的方法中更改对象本身?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Christian C. Salvadó    14 年前

    你不能更改什么的引用 this value 指向,它是不变的。

    如果你想 清楚的 当前数组,只需设置 length 属性为零:

    Array.prototype.clear = function(){
      this.length = 0;
      return true;
    };
    

    编辑: 看看对佐助回答的评论,您可以像我的第一个示例一样清空数组,然后 push 另一个数组的元素,例如:

    Array.prototype.test = function () {
      var newArray = ['foo', 'bar']; // new array elements
      this.length = 0; // empty original
      this.push.apply(this, newArray); // push elements of new array
    };
    
        2
  •  2
  •   sasuke    14 年前

    怎么样:

    Array.prototype.clear = function(){
        this.length = 0;
        return true;
    }