Извините, если я что-то пропустил, но когда я пытаюсь использовать метод вызова в качестве обратного вызова, он приносит мне странную ошибку как в Chrome, так и в Node.js.Метод function.call как обратный вызов
[' foo', ' bar '].map(String.prototype.trim.call);
TypeError: [" foo", " bar "].map is not a function
at Array.map (native)
Но эти фрагменты работы:
[' foo', ' bar '].map(function (item) {
return String.prototype.trim.call(item);
}); // => ['foo', 'bar']
/*
and ES2015
*/
[' foo', ' bar '].map(function() {
return String.prototype.trim.call(...arguments);
}); // => ['foo', 'bar']
Также я проверил тип call
функции:
typeof String.prototype.trim.call; // => 'function'
я делаю что-то не так? Может ли кто-нибудь объяснить мне, почему я получаю такую ошибку? Благодарю.
Спасибо за ответ. Первый со связью дает мне ту же ошибку, что и выше. Второй работает. – Ermon
@Ermon: Он хотел связать 'call' с' trim' :-) – Bergi
в сторону: '['foo', 'bar'] .map (eval.call," ".trim)' - это короткий способ сказать что. – dandavis