Я определил две функции для массива:Как вызвать внешнее «это» во внутренней функции?
Array.prototype.remove = function(obj) {
var i = this.length;
while (i--) {
if (this[i] === obj) {
this.removeAt(i);
}
}
};
Array.prototype.removeAll = function(array2) {
array2.forEach(function(item) {
this.remove(item); // remove not found!!
});
}
Но в функции removeAll
, он сообщает function remove is not found
. Я исправляю это следующим образом:
Array.prototype.removeAll = function(array2) {
var outer = this;
array2.forEach(function(item) {
outer.remove(item);
});
}
Но это уродливо. Есть ли способ лучше?
Я не думаю, что это ужасно уродливо, и это работает. «Это» в вашем foreach изменяется как элемент на итерации, поэтому я не вижу слишком много возможностей для этого. – Paddy