【发布时间】:2015-05-10 07:22:39
【问题描述】:
我正在尝试将对象分配给原型,但我不断收到对象未定义的错误。我正在尝试这样做
//x.prototype.y = {};
StreetEasy.prototype.neighborhoodPaths = {};
稍后在代码中,我尝试在另一个原型函数中访问该对象并使用
//x.prototype.assignData = function(z, a){
// this.y[z] = a;
//}
StreetEasy.prototype.findNeighborhoodPath = function(areaQuery, callback){
var data = {q: areaQuery, key: this.apiKey, format: this.format};
var query = qs.stringify(data);
var url = AreaSearchUrl + '?' + query;
var areaQ = areaQuery.toLowerCase();
if (this.neighborhoodPaths[areaQ]) {
callback(this.neighborhoodPaths[areaQ].path);
} else {
http.get(url, function(response){
response.setEncoding('utf8');
response.on('data', function (rData){
rData = JSON.parse(rData);
callback(rData);
rData.areas.every(function(element){
-----------error is here-> this.neighborhoodPaths[element.name.toLowerCase()].path = element.path;
});
}).on('error', function(e){
console.error('ERROR: ' + e.message + ' | ' + e.statusCode );
});
});
}
};
节点不断返回
TypeError:无法读取未定义的属性 z。我做错了什么?
编辑更多代码:
StreetEasy.prototype.neighborhoodPaths = {};
StreetEasy.prototype.findNeighborhoodPath = function(areaQuery, callback){
var data = {q: areaQuery, key: this.apiKey, format: this.format};
var query = qs.stringify(data);
var url = AreaSearchUrl + '?' + query;
var areaQ = areaQuery.toLowerCase();
if (this.neighborhoodPaths[areaQ]) {
callback(this.neighborhoodPaths[areaQ].path);
} else {
http.get(url, function(response){
response.setEncoding('utf8');
response.on('data', function (rData){
rData = JSON.parse(rData);
callback(rData);
rData.areas.every(function(element){
-----------error is here-> this.neighborhoodPaths[element.name.toLowerCase()].path = element.path;
});
}).on('error', function(e){
console.error('ERROR: ' + e.message + ' | ' + e.statusCode );
});
});
}
};
【问题讨论】:
-
我无法重现该问题。请出示实际代码。
-
变量
x是什么? -
也许 x 不是函数,或者您将 assignData 作为回调/事件处理程序传递。这里解释了如何使用原型和 this 的值:stackoverflow.com/a/16063711/1641941 你可以尝试一些控制台日志以查看更多输出(如 console.log(this))
标签: javascript node.js prototype