这个问题来自对公司的书面测试。它看起来很混乱。我以为它会打印this.name
所设置的内容。当我键入代码时它没有显示任何内容。我对闭包知之甚少,我认为它与问题有关。我想在这里做一点解释。
function dd(name) {
this.name = name;
this.go = function() {
setInterval(function() {
return this.name;
}, 2000)
}
}
var tt = new dd("corolla");
tt.go()

答案 0 :(得分:0)
您无法以这种方式从setInterval
获取返回值。尝试使用回调,如下面的代码段
function dd(name)
{
this.name=name;
console.log( name );
var _this = this;
this.go=function(cb)
{
setInterval(function() {
cb(_this.name);
},1000)
}
}
var tt=new dd("corolla");
tt.go(function(ret) {
console.log( ret );
})
另请注意,在setInteval
内,this
的值与otter函数中的值不同。这就是var _this=this;