我正在尝试使用setInterval在原型函数中打印一些东西,它在控制台中显示未定义。
function newFunc(){
this.name = "this is person name";
this.Age = "16 Years";
}
newFunc.prototype.init = function(){
setInterval(function(){newFunc.prototype.xyz()}, 1000);
}
newFunc.prototype.xyz = function(){
console.log(this.Age);
}
var abc = new newFunc();
abc.init();

答案 0 :(得分:1)
newFunc.prototype.init = function(){
this.xyz();
}
更改为this.xyz()
,因为您位于同一instance
。它不会在setInterval
中有效,因为this
在这里丢失了。您需要引用this
。
newFunc.prototype.init = function(){
var that = this;
setInterval(function(){that.xyz()}, 1000);
}
工作fiddle
:
答案 1 :(得分:0)
它也在函数内部。所以应用this.xyz()
。this
声明一些变量并应用于setInterval(copy.xyz())
为何使用this
this.xyz()
仅适用于newFunc.prototype.init
。不是啊setInteval(function (){})
。这两项功能是分开的。所以用setInterval函数传递。我们需要一个变量。所以我只用var copy
声明了
function newFunc(){
this.name = "this is person name";
this.Age = "16 Years";
}
newFunc.prototype.init = function(){
var copy = this;//in `this` applicable only newFunc.prototype.init.it copy from another variable
setInterval(function(){//in this function are different.
copy.xyz()//passing variable and excute the function
}, 1000);
}
newFunc.prototype.xyz = function(){
console.log(this.Age);
}
var abc = new newFunc();
abc.init();