[]的思考

我们知道 中括号[] 可以取一个对象的属性值,而且中括号里面还能是表达式

var obj = {a: 1}
var prop = 'a';
console.log(obj[prop]);  // a

问题来了,中括号可以取任何变量的属性值

var exampe = 1;
example['1']   //undefined
example = true;
example['1']  //undefined
example = '';
example['1'] //undefined

example = null
example['1']  // 抛出异常
example = undefined
example['1']  // 抛出异常

说明了,[]可以为 任何分配内存的变量 取属性值

举个例子:
为应付后端数据不稳定的问题,我们需要格式化的取出数据,
需求,写一个格式化函数, 这个函数第一个参数为一个变量,类型不定,后面的参数为不定个数的属性

比如:
formate(obj,, b, c, d) // obj.a.b.c.d

function formate() {
  var args = Array.prototype.slice.call(arguments);
  var obj = args[0];
  var props = args.slice(1);
  for (var i = 0; i < props.length; i++) {
    // 这里必须要判断, 不然的话 obj为null 或者 undefined
    // 那么obj['x']会报错
    // 即[]只能去有分配内存的变量的属性值
    if (obj) {
      obj = obj[props[i]];
    }
  }
  return obj;
}

var obj = {
  a: {
    b: {
      c:{
        d: 1
      }
    }
  }
}

console.log(formate(obj, 'a', 'b', 'c'));
console.log(formate(null, 'a', 'b', 'c'));
console.log(formate(1, 'a', 'b', 'c'));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 第九章 久歌未央/文 上一章 如果你翻开这本书的话,你会发现,好像有点乱,似乎看不懂,为什么和以前读过的任何一本小...
    这个周末阅读 282评论 0 1
  • 今年又一次选择了陆向谦创业创新课,这门选修课带给我的是更多的人生经验,是创业精神,与专业是完全不同的。每次陆老师都...
    C陈松阅读 203评论 0 0
  • 再长的电视剧都有个鸡零狗碎的结局1——相逢曾相识 “啊?”我并不知道自己当时的表情,多半是瞪大了眼睛呆住了。也想过...
    理斯李阅读 369评论 0 1
  • 转眼,成为李言的女朋友已经一个月了,在一起的第三天,林笑笑才知道,李言的星座,刚刚好是摩羯座,林笑笑觉得有点郁闷,...
    南橘爱北枳阅读 297评论 0 19