考虑一个类的这个(简化的)摘录:
function PluginsEngine() {
this.allPluggins = require('./plugins');
};
PluginsEngine.prototype.applyPlugins = function(incomingData, done){
// bind the incoming data to each plugin
var key;
for (key in this.allPluggins)
this.allPluggins[key] = this.allPluggins[key].bind(undefined, incomingData);
async.parallel(this.allPluggins, done);
};
构造函数加载一组匿名函数和" applyPlugins"然后方法传递" incomingData" (字符串)到每个,这些是使用async执行的。
在针对此编写测试时,我看到了一个奇怪的行为,即调用" applyPlugins"运行正常,但之后立即再次调用会导致错误:
TypeError: string is not a function
添加一些额外的调试,我可以看到第二次运行时allPluggins为空(功能不可用)。
有人可以告诉变量为什么会失去这些功能吗?