我是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);
}
}
也许它不是很优雅,但似乎有效。