У меня есть простой пример ниже, который создает конструктор Object.Существует метод add
, который пытается перебрать коллекцию arguments
, вызвав метод Array.prototype.forEach
.
Техника работает, но у меня проблема со значением this
.
Я прибег к хитрости присвоения this
действительной переменной (This
), используя реальное значение во внутренней функции.Это работает, но я думаю, что это должно быть проще.
Согласно https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call, я должен быть в состоянии вызвать это с необязательным thisArg
в начале.Я пробовал это в add2
методе. не работает .
Как правильно включить новое значение для аргумента this
в метод call
?
function Collection() {
this.data=[];
}
Collection.prototype={
constructor: Collection,
add() {
var This=this;
Array.prototype.forEach.call(arguments,function(value) {
This.data.push(value);
});
},
add2() {
Array.prototype.forEach.call(this,arguments,function(value) {
this.data.push(value);
});
},
}
var c=new Collection();
c.add('apple','banana');
alert(c.data)