Вот пример кода, который я пытаюсь выполнить.Область применения вложенных прототипов Javascript
var Game = function(){
this.state = 'yeah';
}
Game.prototype.call = function(){
document.writeln(this.state);
Game.prototype.say();
}
Game.prototype.say = function(){
document.writeln(this.state);
}
game = new Game();
game.call();
В результате yeah undefined
, что означает, что call()
работает должным образом в то время как say()
нет. Что я могу сделать для функции say()
, чтобы иметь возможность получить this.state из Game?
Я бы не рекомендовал определять метод '.call()'. Хотя технически это может работать в некоторых случаях, это может действительно смутить людей с помощью функции Function.call(), которая есть у каждой функции. – jfriend00
Вы не должны использовать ['writeln'] (http://www.w3.org/TR/2000/WD-DOM-Level-2-HTML-20001113/html.html#ID-35318390), как если бы документ закрыт (например, после отправки события загрузки) он сначала вызовет ['document.open'] (http://www.w3.org/TR/DOM-Level-2-HTML/html.html# ID-72161170), который очистит документ существующего контента. – RobG