0

如果我有这样的事情:

Foo = function  (bar_) {
    this.bar = bar_;
    this.run = function() {
    cron.schedule('*/5 * * * * *', function() {
       console.log(/*this.bar?*/);
    });
}

var myvar = new Foo("mybar");
myvar.run();

如何设置 cron 在调用 this.run 时打印出 this.bar 的值?我试过 this.bar 并返回undefined

4

1 回答 1

1

你可以试试这个:

Foo = function  (bar_) {
this.bar = bar_;
var that = this
this.run = function() {
   cron.schedule('*/5 * * * * *', function() {
      console.log(that.bar);
   });
}

var myvar = new Foo("mybar");
myvar.run();

解释如下: 是对类Foo实例的引用,但它也是任何实例化对象对其自身的默认引用。

因此,在 cron.schedule 调用中,this指向cron而不是Foo将this复制到that before ,并在 cron.shcedule 中使用会为您提供您正在寻找的正确对象(“t​​his”)

于 2016-10-09T20:02:22.950 回答