给我一个Object#<Object>的NodeJ没有方法

我有一个类,其辅助类定义:

function ClassA(){ this.results_array = []; this.counter = 0; this.requestCB = function(err, response, body){ if(err){ console.log(err); } else{ this.counter++; var helper = new ClassAHelper(body); this.results_array.concat(helper.parse()); } }; }; function ClassAHelper(body){ this._body = body; this.result_partial_array = []; this.parse = function(){ var temp = this.parseInfo(); this.result_partial_array.push(temp); return this.result_partial_array; }; this.parseInfo = function(){ var info; //Get some info from this._body return info }; }; 

NodeJS给我以下错误:

TypeError:Object#<Object>没有方法'parseInfo'

我不知道为什么我不能从ClassAHelper的parsing方法中调用this.parseInfo()。

如果有人能解释一个可能的解决scheme 或者至less是什么问题? 我尝试重新sorting函数声明,和其他一些想法,但无济于事。

PS我试着简化了代码为stackoverflow。 嘿,它仍然是有道理的:)

PPS这是我的第一个stackoverflow问题。 希望我做的一切正确。 🙂

this是范围内的function。 所以,当你做这个this.parse=function(){ ,有一个新的。 为了保持ClassAHelper的this ,你必须把它传入或引用你所做的匿名函数。 以下示例this分配给函数外的variables并在函数内引用它:

 function ClassAHelper(body){ this._body = body; this.result_partial_array = []; var self = this; this.parse = function(){ var temp = self.parseInfo(); self.result_partial_array.push(temp); return self.result_partial_array; }; this.parseInfo = function(){ var info; //Get some info from this._body return info; }; }; 

进一步阅读和其他方式: 为什么你需要在同一行上调用匿名函数?

这是一个简单的例子,

 function A() { this.x = function (){ return this.y(); }; this.y = function (){ return "Returned from y()"; }; } var a = new A(); ax(); 

注意使用new并使用ax()调用方法。

你如何创build你的函数的实例,并在ClassAHelper调用parse

是不是像这样的东西:

 var a = A(); ax(); // Or Ax()