2016-02-29 78 views
0

我想要做的事情非常简单:我创建一个对象,或者更好我定义了一个实例化对象的函数,然后我有另一个函数读取从文件中读取数据并在读取完成后得到回调。该函数被分配给对象的原型,所以它只创建一次,而不是每次创建它的新实例。在回调函数内部访问实例变量

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

这是一个* *财产,而不是一个变量。 – Bergi

+0

好,因为值可以改变它仍然是一个变量:)语义上讲,当然。 –

回答

2

只是bind您的回调函数来正确的上下文:

fs.readFile(file, (function (err, result) { 
    console.log(this.craziness); 
}).bind(this)); 
+1

确实很微不足道。谢谢! –