[]的思考

我們知道 中括號[] 可以取一個對象的屬性值,而且中括號里面還能是表達(dá)式

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']  // 拋出異常

說明了,[]可以為 任何分配內(nèi)存的變量 取屬性值

舉個例子:
為應(yīng)付后端數(shù)據(jù)不穩(wěn)定的問題,我們需要格式化的取出數(shù)據(jù),
需求,寫一個格式化函數(shù), 這個函數(shù)第一個參數(shù)為一個變量,類型不定,后面的參數(shù)為不定個數(shù)的屬性

比如:
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']會報(bào)錯
    // 即[]只能去有分配內(nèi)存的變量的屬性值
    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'));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,677評論 0 4
  • 第九章 久歌未央/文 上一章 如果你翻開這本書的話,你會發(fā)現(xiàn),好像有點(diǎn)亂,似乎看不懂,為什么和以前讀過的任何一本小...
    這個周末閱讀 321評論 0 1
  • 今年又一次選擇了陸向謙創(chuàng)業(yè)創(chuàng)新課,這門選修課帶給我的是更多的人生經(jīng)驗(yàn),是創(chuàng)業(yè)精神,與專業(yè)是完全不同的。每次陸老師都...
    C陳松閱讀 219評論 0 0
  • 再長的電視劇都有個雞零狗碎的結(jié)局1——相逢曾相識 “?。俊蔽也⒉恢雷约寒?dāng)時的表情,多半是瞪大了眼睛呆住了。也想過...
    理斯李閱讀 408評論 0 1
  • 轉(zhuǎn)眼,成為李言的女朋友已經(jīng)一個月了,在一起的第三天,林笑笑才知道,李言的星座,剛剛好是摩羯座,林笑笑覺得有點(diǎn)郁悶,...
    南橘愛北枳閱讀 417評論 0 19

友情鏈接更多精彩內(nèi)容