我是javascript/nodejs的新手,我正在嘗試清理它的代碼。清理Javascript/Nodejs代碼
我正在使用async nodejs庫來處理使代碼的異步部分更容易。
現在的代碼如下所示:
Object.prototype.method = function(){
var self = this;
// bunch of code
async.forEach(self.someArr, function(someObj, callback){
self.somefunc(someObj.someProp, function(err, aNewObj) {
if (err) {
return callback(err);
}
self.someOtherArr.push(aNewObj.someOtherProp);
callback();
});
}, callback);
}
但是,我想和另一個名爲功能上對象的原型也被定義來代替匿名函數。由於代碼的結構化方式,我不知道如何創建一個新函數來傳入async.forEach
,同時保留正確的self
值。
我想要什麼它看起來像:
AnObject.prototype.method = function(){
var self = this;
// bunch of code
async.forEach(self.someArr, self._newMethod, callback);
}
AnObject.prototype._newMethod = function(someObj, callback){
var self = this;
self.somefunc(someObj.someProp, function(err, aNewObj) {
if (err) {
return callback(err);
}
self.someOtherArr.push(aNewObj.someOtherProp);
callback();
});
}
但是,這顯然並不因爲上下文變化的工作。
如果命名的函數在內部也使用變量'self',它應該沒有區別。唯一可能有趣的是如果它使用'this'。 – 2013-02-09 00:07:45
我更新了我的問題,使其更加清晰。命名的函數也使用self。 – 2013-02-09 00:58:09