无法在天气应用中阅读未定义的javascript属性'天气'

时间:2017-02-08 12:48:37

标签: javascript json

感谢所有人,我第一次就把它弄好了但是因为别的东西我一直感到困惑,并试图修复一些没有破坏的东西。

2 个答案:

答案 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,它会有效,但这并不合理,因为您通常会避免从对象内部访问全局变量