我想分配一个对象到一个原型,但我不断收到一个对象未定义的错误。我试图做到这一点指定对象到原型
//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);
});
});
}
};
我不能”重现问题。请显示实际的代码。 – thefourtheye
什么是变量'x'? – jfriend00
也许x不是函数,或者您将assignData作为回调/事件处理函数传递。如何使用原型和这个的价值在这里解释:http://stackoverflow.com/a/16063711/1641941你可以尝试一些控制台日志看到更多的输出(如console.log(this)) – HMR