在回调函数

时间:2016-02-29 21:11:16

标签: javascript node.js

我正在尝试做的事情非常简单:我正在创建一个对象,或者更好我正在定义一个实例化该对象的函数,然后我有另一个函数从文件读取并在获取回调时阅读结束了。该函数被分配给对象的原型,因此它只创建一次,而不是每次我创建它的新实例时。

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;

如示例所示,问题是在回调内部我无法访问创建对象时分配的变量。

1 个答案:

答案 0 :(得分:2)

只需bind您的回调函数到正确的上下文:

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