我正在尝试做的事情非常简单:我正在创建一个对象,或者更好我正在定义一个实例化该对象的函数,然后我有另一个函数从文件读取并在获取回调时阅读结束了。该函数被分配给对象的原型,因此它只创建一次,而不是每次我创建它的新实例时。
var fs = require('fs');
var CrazyObject = function () {
this.craziness = 'this is sooo crazy';
};
CrazyObject.prototype.crazyFunction = function (file) {
fs.readFile(file, function (err, result) {
// here i can't access the craziness!
});
// but here i can
};
exports.CrazyObject = CrazyObject;
如示例所示,问题是在回调内部我无法访问创建对象时分配的变量。
答案 0 :(得分:2)
只需bind您的回调函数到正确的上下文:
fs.readFile(file, (function (err, result) {
console.log(this.craziness);
}).bind(this));