Я надеюсь, что кто-то может помочь мне разобраться, как это сделать правильно, а не просто «заставить его работать».JavaScript: как вызвать функцию в свойстве прототипа, изнутри другой функции в свойстве прототипа, все внутри замыкания?
Я пытаюсь использовать объект внутри крышки, и имеющие проблемы сферы применения:
var Why = function() {
this.foo = 'bar';
}
Why.prototype.explain = function() {
alert(this.foo);
}
Why.prototype.doIt = function() {
this.explain();
}
(function() {
document.addEventListener("DOMContentLoaded", function(event) {
var why = new Why();
why.doIt();
});
})();
И я получаю в консоли:
Uncaught TypeError: this.explain is not a function
Я мог бы использовать
Why.prototype.explain.call();
но это просто кажется неправильным, и когда я на самом деле делаю это ... this.foo в любом случае не определено,, так что это явно не правильный подход.
Если удалить функцию самостоятельного вызова следующим образом ...
var Why = function() {
this.foo = 'bar';
}
Why.prototype.explain = function() {
console.log(this.foo);
}
Why.prototype.doIt = function() {
// Why.prototype.explain.call();
this.explain();
}
// (function() {
document.addEventListener("DOMContentLoaded", function(event) {
var why = new Why();
why.doIt();
});
// })();
то это работает, конечно, но:
, что мне не хватает и где/как я могу узнать его?
Заранее спасибо.
простой: добавьте пол двоеточия после назначений, вы не поверите, что происходит ... – dandavis