NodeJs 给我一个对象 #<Object> 没有方法
NodeJs giving me a Object #<Object> has no method
我有一个 class 及其助手 class 定义:
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> has no method 'parseInfo'
我不明白为什么我不能从 ClassAHelper 的解析方法中调用 this.parseInfo()。
如果有人能解释一个可能的解决方案。或者至少,问题是什么?我尝试重新排序函数声明和其他一些想法,但无济于事。
P.S。我尝试简化 Whosebug 的代码。 Hepefully 它仍然有意义 :)
P.P.S 这是我的第一个 Whosebug 问题。希望我做对了一切。 :)
这是一个有效的简化示例:
function A() {
this.x = function (){
return this.y();
};
this.y = function (){
return "Returned from y()";
};
}
var a = new A();
a.x();
注意使用 new
并使用 a.x()
调用方法。
您如何创建函数实例并在 ClassAHelper
中调用 parse
?
是不是像这样:
var a = A();
a.x();
// Or
A.x()
this
的范围是它所在的函数。因此,当您执行 this.parse=function(){
时,会出现一个新的 this
。要保留 ClassAHelper 的 this
,您必须将其传入或在您创建的匿名函数中引用它。以下示例将 this
分配给函数外部的变量并在函数内部引用它:
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;
};
};
进一步阅读和其他阅读方式:
Why do you need to invoke an anonymous function on the same line?
我有一个 class 及其助手 class 定义:
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> has no method 'parseInfo'
我不明白为什么我不能从 ClassAHelper 的解析方法中调用 this.parseInfo()。
如果有人能解释一个可能的解决方案。或者至少,问题是什么?我尝试重新排序函数声明和其他一些想法,但无济于事。
P.S。我尝试简化 Whosebug 的代码。 Hepefully 它仍然有意义 :)
P.P.S 这是我的第一个 Whosebug 问题。希望我做对了一切。 :)
这是一个有效的简化示例:
function A() {
this.x = function (){
return this.y();
};
this.y = function (){
return "Returned from y()";
};
}
var a = new A();
a.x();
注意使用 new
并使用 a.x()
调用方法。
您如何创建函数实例并在 ClassAHelper
中调用 parse
?
是不是像这样:
var a = A();
a.x();
// Or
A.x()
this
的范围是它所在的函数。因此,当您执行 this.parse=function(){
时,会出现一个新的 this
。要保留 ClassAHelper 的 this
,您必须将其传入或在您创建的匿名函数中引用它。以下示例将 this
分配给函数外部的变量并在函数内部引用它:
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;
};
};
进一步阅读和其他阅读方式: Why do you need to invoke an anonymous function on the same line?