• 携手共建美丽南昌 守护幸福家园 2019-09-11
  • 浙大科研团队15载攻克歼20等飞机装配系列难题 2019-08-31
  • 全国空气污染地图 大家来吐霾 2019-08-29
  • 《风暴舞》亮相上海电视节 或成年度期待大戏 2019-08-26
  • 正式进入商用时代 刷脸支付,这一次中国又领先了 2019-08-26
  • 新粤牵手心连心喀什绽放木棉花 ——广东省第九批援疆干部人才记事 2019-08-22
  • 甘肃警方破获一起“微信卖茶叶”特大新型网络诈骗案 2019-08-22
  • 郭子鹰的专栏作者中国国家地理网 2019-08-21
  • 全球最大规模电子娱乐展火热登场 2019-08-14
  • 不一样的角度 带你领略昭苏巴勒克苏大草原 2019-08-07
  • 河北省调整中小学教材价格 2019-08-02
  • 新时代 新气象 新作为 学习宣传贯彻党的十九大精神 2019-08-02
  • 两会“好声音”:二孩时代,幼教能否纳入义务教育? 2019-07-26
  • 受日本大阪地震影响 多家航企客票可免费退改签 2019-07-26
  • 【奥吉通丰瑞车型报价】奥吉通丰瑞4S店车型价格 2019-07-25
  • 您好,欢迎来到北风网!

    obeject.key与object[key]有什么区别

    加关注
    14 1599
    小凤爷 小凤爷 2016-01-13 23:41:27 JavaScript

    如下代码,想把此object的data部分遍历赋予给 input标签,可是当用json.data.key时取值都为undefined。用json.data.[key]则显示正常。不知道是为什么。这两者有什么区别

     var json =  {
        statusCode:1,
        data: {
         userName:"Wilson",
         userCode:"U201313759",
         password:"88888888",
         academy:"电信学院",
         major:"通信工程",
         grade:"2013",
         class:"5班",
         email:"[email protected]",    },  
         };  
          for (var key in json.data) {
        if (json.data.hasOwnProperty(key)) {
        // 如果吧json.data[key],则输出全部为undefined
          document.getElementsByClassName(key)[0].value = json.data[key];
          console.log(json.data);
        }
          }
    请先登录注册
    wgh932739
    已采纳
    wgh932739 的回复

    访问json的时候,obj["key"]与obj.key都是可以的,不过,如果key值并不确定,而是一个变量的时候,则只能通过obj[someKey]的方式访问。

    var obj = {
        name: 'tom', age: 22
    },
    someKey = 'name';
    
    obj.name   // 可以访问,返回 'tom'
    obj['name']  // 可以访问,返回 'tom'
    obj.someKey // 出错
    obj[someKey] // 可以访问,返回 'tom'
    

    2016-02-17 16:24:09 回复 0
    请先登录注册
    ji508
    ji508 的回复

    前面几位说的很好了,我补充一个:
    当你的属性名包含了空格时,必须采用中括号的写法。

    2016-01-19 03:42:18 回复 0
    请先登录注册
    yang2119
    yang2119 的回复

    • 动态取字段

    • 特殊字符

    2016-01-20 03:42:18 回复 0
    请先登录注册
    ynwsldh
    ynwsldh 的回复

    //es6.ruanyifeng.com/#docs/class 阅读ES6的Class规范会有答案的。

    2016-01-21 03:42:18 回复 0
    请先登录注册
    阿九1977
    阿九1977 的回复

    obeject.key 是对象形式访问变量
    对象声明:

    var obeject = {
        key: 'hello world!',
        key1: 'asdfg'
    }
    console.log(typeof obeject);
    console.log(obeject.key);
    

    object[key] 是数组形式访问变量
    数组声明:

    var obeject = [
        'hello world!', 'asdfg'
    ];
    console.log(typeof obeject);
    console.log(obeject[0]);

    2016-01-21 03:57:27 回复 0
    请先登录注册
    plcat99
    plcat99 的回复

    object.key里面的key为标识符,应符合标识符(比如变量)的命名规范。
    object[key]里面的key为表达式,可以是字符串或复合表达式,比如object['your name']object['your' + ' name']object[dict.nameKey]。

    2016-01-21 03:58:01 回复 0
    请先登录注册
    asynoo
    asynoo 的回复

    • json.data.key 这里的key必须是引用值

    • json.data[key] 这里的key必须是字面量

    2016-02-17 16:13:10 回复 0
    请先登录注册
    chaneed
    chaneed 的回复

    我来告诉你答案吧

    json.data.key

    是对象访问方式;
    所以json.data.key访问的是json对象下的data对象下的key;
    那么json.data[key]访问的是json对象下的data数组的下标为key的值(对象是可以以数组形式来访问的),
    因为这个key是变量,假设key为1,那么则

    json.data[1]; //访问的是json.data下的第二个数据

    如果是:

    json.data['key']则访问的是json对象下的data数据中一key来下标的数据,比如
    
    var json = {
        data : {
            key : 'value';
        }
    }
    // 那么:
    json.data['key']得到的是value

    好了,来对比以下代码:

    var json =  {
        statusCode:1,
        data: {
         userName:"Wilson",
         userCode:"U201313759",
         password:"88888888",
         academy:"电信学院",
         major:"通信工程",
         grade:"2013",
         class:"5班",
         key : "这里是我定义的key值", // 为了有个好的示例,我定义了一个key
         email:"[email protected]",
             },  
         }; 
    // 1.获取key值
    var a = json.data.key; 
    console.log(a); // 这里输出的a为:这里是我定义的key值
    // 2.数组方式:
    var key = 0;
    var b = json.data[key]; 
    console.log(b); // 这里输出b为:Wilson 
    // 也就是说这里输出的是userName的值
    // 3.继续数组方式获取
    var c = json.data['key'];
    console.log(c); // 这里输出c为:这里是我定义的key值

    再仔细解释我不知道怎么解释,只可意会不可言传,你自己想一下。

    2016-02-17 16:16:58 回复 0
    请先登录注册
    ilmhuang
    ilmhuang 的回复

    • data.key 代表 data里面name = "key"的value

    • data[key] 代表data里面name = key 的value

    2016-02-17 16:19:41 回复 0
    请先登录注册
    shanmaobhb
    shanmaobhb 的回复

    区别还有:

    var obj = {}; 
    obj['first name'] = 'mike';

    以上情形,只有通过[]语法才能获取'first name',因为其中有空格,用.语法怎么也取不到。。。

    2016-02-17 16:20:41 回复 0
    请先登录注册
  • 携手共建美丽南昌 守护幸福家园 2019-09-11
  • 浙大科研团队15载攻克歼20等飞机装配系列难题 2019-08-31
  • 全国空气污染地图 大家来吐霾 2019-08-29
  • 《风暴舞》亮相上海电视节 或成年度期待大戏 2019-08-26
  • 正式进入商用时代 刷脸支付,这一次中国又领先了 2019-08-26
  • 新粤牵手心连心喀什绽放木棉花 ——广东省第九批援疆干部人才记事 2019-08-22
  • 甘肃警方破获一起“微信卖茶叶”特大新型网络诈骗案 2019-08-22
  • 郭子鹰的专栏作者中国国家地理网 2019-08-21
  • 全球最大规模电子娱乐展火热登场 2019-08-14
  • 不一样的角度 带你领略昭苏巴勒克苏大草原 2019-08-07
  • 河北省调整中小学教材价格 2019-08-02
  • 新时代 新气象 新作为 学习宣传贯彻党的十九大精神 2019-08-02
  • 两会“好声音”:二孩时代,幼教能否纳入义务教育? 2019-07-26
  • 受日本大阪地震影响 多家航企客票可免费退改签 2019-07-26
  • 【奥吉通丰瑞车型报价】奥吉通丰瑞4S店车型价格 2019-07-25
  • 开户送跳槽金的网站 3d对子号表 重庆时时计划王 北京快乐八分 手机金钱蛙游戏 竞彩足球论坛贴吧 江苏时时网 北京快乐8八位走势图 pk10开彩结果查询 幸运飞船开奖记录结果 北京时时5分钟号 千岛湖农家乐免费钓鱼 最强nba球探抽谁好 打牌斗牛技巧 五星独胆经验技巧大全 百人牛牛如何开挂下载