感谢所有人,我第一次就把它弄好了但是因为别的东西我一直感到困惑,并试图修复一些没有破坏的东西。
答案 0 :(得分:1)
第一个可行,因为您正在尝试访问已初始化的全局数据对象。在你传递的构造函数中已经有了描述
var data = JSON.parse(http.responseText);
var weatherData = new Weather(cityName, data.weather[0].description.toUpperCase());`
function Weather(cityName, description) {
this.cityName = cityName
this.description = description;
this._temperature = '';
}
在第二种情况下,您要访问this.data.weahter
,但您的对象中没有this.data
var data = JSON.parse(http.responseText);
var weatherData = new Weather(cityName, data);
function Weather(cityName, datacity) {
this.cityName = cityName
this.data.weather[0].description.toUpperCase() = description;
// ^ here your don't have data object, also neithier the weather for accessing by index
this._temperature = '';
}
我认为你只错误输入了属性名称,你需要
var data = JSON.parse(http.responseText);
var weatherData = new Weather(cityName, data);
function Weather(cityName, datacity) {
this.cityName = cityName
this.description = datacity.weather[0].description.toUpperCase();
this._temperature = '';
}
答案 1 :(得分:1)
第一个是访问您已定义的变量,称为data
。第二个是尝试使用从未定义的this.data
。
很难说你认为它应该有效。
如果您从this.
删除this.data
,它会有效,但这并不合理,因为您通常会避免从对象内部访问全局变量