多层JSON数据为什么不能访问

我在JS中声明了一个json数据,然后里面又声明了子json 类型数据,想在里面绑定父级的数据,但是绑定失败 是什么原因呢?? 直接看图,
图片描述
var json = {

type: 2,
scity_3: '',
scity: '杭州',
ecity: '',
ecity_3: '',
date_go: '',
date_back: '',
code_3_go_json: {
    url: 'http://118.178.225.32/hmp_website/yiplain/getairportlist.json',
    parameters: {
        'keywords': encodeURI(json.scity)
    },
    success: function (data) {
        console.log(this);
        console.log(data);
    }
},

}

红色箭头标注部分每次直接显示undefinde ,为什么呢,是因为只能在函数里面进行数据绑定么?

阅读 2.9k
3 个回答

正在声明的对象调用本身结果是undefined

var json = {
    type: 2,
    scity_3: '',
    scity: '杭州',
    ecity: '',
    ecity_3: '',
    date_go: '',
    date_back: '',
    code_3_go_json: {
        url: 'http://118.178.225.32/hmp_website/yiplain/getairportlist.json',

    success: function (data) {
        console.log(this);
        console.log(data);
    }
    }
}
    json.parameters={
        'keywords': encodeURI(json.scity)
    }
var a = {
    b:console.log(a)
    };

过程:

var a;//undefined
创建{b:console.log(a)};
将其赋值给a;

能理解了吗。

  1. 首先这不是json,这是使用字面量声明方式声明的对象。json的键名必须用双引号包裹,而且不允许出现function

  2. 对象里引用自身,一般用this指针,但是你这里居然是嵌套的,所以建议你直接把这段拿出去存变量就好了(也就甭改this了)。

  3. 变量命名的时候,尽量避开潜在的系统保留关键字(当然你要把保留关键字列表背下来了请忽略此条)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题