没有来自对象的输出功能

时间:2017-08-01 17:22:30

标签: javascript

这个问题来自对公司的书面测试。它看起来很混乱。我以为它会打印this.name所设置的内容。当我键入代码时它没有显示任何内容。我对闭包知之甚少,我认为它与问题有关。我想在这里做一点解释。



function dd(name) {
  this.name = name;
  this.go = function() {
    setInterval(function() {
      return this.name;
    }, 2000)
  }
}
var tt = new dd("corolla");
tt.go()




1 个答案:

答案 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;

的原因