Есть ли более простой способ вызвать фильтр на прототипе без анонимной функции?
Интересно, есть ли эквивалент myArray.filter(function(it){ it.method() })
.
Это похоже на то, что может работать (это не так):
function X() {}
X.prototype.method = function() { console.log(this); }
[new X(), new X()].filter(X.prototype.method.call);
Вместо этого я получаю TypeError как в последнем Firefox, так и в Chrome, потому что он не совсем делает то, что я хочу:
x = function() { console.log(this) }
x.call(123) //logs 123
y = x.call //reports that y is of type function in console
y(123) //TypeError: Function.prototype.call called on incompatible undefined
y.call(x, 123); //this is what you really need
Я попытался использовать bind, возможно, я его пропустил, но если это не однострочный шрифт, это не лучше, чем форма анонимного метода:
function X() {}
X.prototype.method = function() { console.log(this); }
y = X.prototype.method.call
y.bind(X.prototype.method)
[new X(), new X()].filter(y);