任何人都可以建议这段代码可能有什么问题吗? 在构造函数中设置的变量只能在创建对象时访问,但是一旦我调用其中一个对象的方法,就不再可以访问该变量。
function Animal(name) {
this.name = name
}
Animal.prototype = (function()
{
var i = 0;
var sitdown = function() {
console.log(this.name + ' sits down.');
standup();
};
var standup = function (){
console.log(this.name+' stands up');
if(i != 10)
{
i++;
sitdown();
}
};
return {
standup: standup
}
})();
var Tiger = new Animal("Tiger");
Tiger.standup();
输出:
Tiger stands up
sits down.
stands up
sits down.
.......
.......
stands up
sits down.
stands up
答案 0 :(得分:2)
'this'只包含对象引用,如果你是
this.sitdown()
standup.call(this)
。你的standup()方法将sitdown()作为一个函数调用,而不是作为一个方法,并且不起作用。
答案 1 :(得分:1)
除了standup
的第一次调用外,this
指向窗口,而不是Tiger
。问题是,在standup
中,您拨打sitdown()
。相反,您应该致电sitdown.call(this)
。