如何将这个关键字称为“上层”?

时间:2014-12-23 01:27:52

标签: javascript node.js

我有一个脚本,其中包含一个使用回调来返回状态的函数,我必须提交它是否对类变量成功。我无法使用this来访问它,因为它不在范围内。我无法发布我的确切代码的代码段,但以下内容应说明我的问题

var thisObject = Item.prototype;
function Item(directory){
     this._completedTasks = [];
     this._fsDirectory = directory;
     if (!fs.existsSync(this._fsDirectory)){
         fs.mkdirSync(this._fsDirectory);
     }
}

thisObject.doStuff = function(url){
     goGetFile(url, function(message){
         this._completedTasks.push(url);
         //_completedTasks appears to be undefined here.
     });
}

module.exports = Item;

如何访问变量_completedTasks

1 个答案:

答案 0 :(得分:1)

你可以做两件事,保存对this的引用,然后使用它,或使用bind来设置执行上下文

//Saving a reference
thisObject.doStuff = function(url){
     var that = this;
     goGetFile(url, function(message){
         that._completedTasks.push(url);
     });
}

//Using bind
thisObject.doStuff = function(url){
     goGetFile(url, function(message){
         this._completedTasks.push(url);
     }.bind(this));
}