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

Этот код вызывает ошибку invalid assignment left-hand side.

Как мне изменить сам объект в одном из его методов?

1
Erik Escobedo 15 Авг 2010 в 22:34

2 ответа

Лучший ответ

Вы не можете изменить ссылку на значение this указывает на неизменяемый.

Если вы хотите очистить текущий массив, вы можете просто установить его свойство 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
};
5
CMS 15 Авг 2010 в 19:03

Как насчет:

Array.prototype.clear = function(){
    this.length = 0;
    return true;
}
2
sasuke 15 Авг 2010 в 18:40