Я пытаюсь вычислить код с одним слоем, используя map
.
Вот простая настройка.
function Cat(name) {
this.name = name;
// FYI: using __proto__ is discouraged. thanks @KarelG
this.__proto__.mew = function () {
console.log(this.name + " mews");
};
}
var cats = [
new Cat('MB'),
new Cat('503')
];
Затем я могу использовать map()
для вызова метода mew
у кошек.
cats.map(function (cat) {
cat.mew();
});
// MB mews
// 503 mews
call()
на прототипе также работает.
cats.map(function (cat) {
Cat.prototype.mew.call(cat);
});
// MB mews
// 503 mews
И вот мой последний однострочный, но он испускает ошибку, и я не мог понять, почему:
cats.map(Cat.prototype.mew.call);
// Uncaught TypeError: undefined is not a function
// at Array.map (<anonymous>)
Проверка typeof Cat.prototype.mew.call
говорит, что это function
и map()
должен быть функцией.
Может ли кто-нибудь объяснить, почему это не работает? Что я пропустил и где исправить?