Почему я могу это сделать:
Array.prototype.foo = function() {
this.splice(0, this.length);
return this.concat([1,2,3]);
}
Но я не могу этого сделать:
Array.prototype.foo = function() {
return this = [1,2,3];
}
Обе функции уничтожают значение этого параметра и меняют его на [1,2,3]
, а второй выдает следующую ошибку: Uncaught ReferenceError: Invalid left-hand side in assignment
Я подозреваю, что, поскольку разрешение означает, что я могу потенциально изменить массив на что-то другое (например, на строку), но я надеюсь, что кто-то там точно знает и/или имеет более подробное объяснение.