缓存原型函数不会缓存它所属的对象

时间:2013-12-10 15:37:55

标签: javascript node.js async.js

在Javascript中我试图让一系列函数由Async.series执行。

使用Javascript:

function Field(name, height, width) {
   this.name = name;
   this.height = height;
   this.width = width;
}

Field.prototype.doSomething = function(callback) {
   console.log(name, width, height);
   // do some stuff with name, height etc. and produce someResults
   callback(undefined, someResults
}

问题:

// Dict of Functions
var functions = {};

// Array of Field Objects
fields.forEach( function(field) {
  functions[field.name] = field.doSomething;
}

Async.series( functions, callback );

问题是我的所有“类”变量都没有被缓存,因为当我尝试在Async.series中运行函数时我得到异常(名称,宽度和高度没有定义)。

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:2)

我建议使用bind

fields.forEach( function(field) {
  functions[field.name] = field.doSomething.bind(field);
}

否则,您this内的doSomething值不可能是您想要的。调用bindthis时调用field bind的值。