无法从函数内部访问变量

时间:2018-05-30 08:39:16

标签: javascript node.js

我是node.js的新手。你能帮助我理解为什么下面的代码不起作用吗?

在manager.js我有:

module.exports = function (db) {
    this.db = db;
    this.print = function () {
        console.log("printing " + this.db);
    }
    this.monitor = function() {
        setInterval(this.print, 1000);
    }
}

然后从index.js我这样称呼它:

var man = require('./manager.js');
var manager = new man(db); // db is my database
manager.print();
manager.monitor(db);

我得到的输出是:

printing [object Database]
printing undefined
printing undefined
printing undefined
printing undefined
printing undefined
printing undefined

所以当我从index.js调用print时,可以看到我正在向它传递一个数据库。但是当从monitor()调用print()时,db是" undefined"。

=== UPDATE ===

我找到了一个简单的解决方案,节省了#34;这个"进入"自我":

module.exports = function (db) {
    var self = this;
    this.db = db;
    this.print = function () {
        console.log("printing " + self.db);
    }
    this.monitor = function() {
        setInterval(self.print, 1000);
    }
}

也许它不是很优雅,但似乎有效。

0 个答案:

没有答案