第三章 對象

  1. 檢索:
var obj = {
    name: 'Jack'
}

訪問變量中屬性和方法

(1) obj.name
(2) obj['name'] ==> 如果 name 為JS中的關鍵字或保留字,可以用這種方法訪問以保證不出錯

不過我們建議永遠禁止使用JS關鍵字或保留字命名變量

|| 運算符可以用來填充變量

obj.name = undefined;
var name = obj['name'] || 'wang'
name ==> 'wang'
obj.name ==> undefined
obj.name.age ==> throw "TypeError"
obj.name && obj.name.age ==> undefined   //避免報錯
  1. 原型
    所有通過對象字面量創建的對象都連接到Object.prototype,它是JS的標配對象

原型關系是一種動態的關系。如果我們添加一個新的屬性到原型中,該屬性會立即對所有基于該原型創建的對象可見
因為對象會先在自身查找是否有該方法,沒有的話,再去原型鏈查找。

var obj = {}
Object.prototype.name = "jack"
obj.name = 'jack';
  1. 枚舉
    使用for in枚舉對象屬性,屬性名出現的順序是不確定的,如果想確保屬性名以特定的順序出現,最好的辦法就是完全避免使用for in語句,而是創建一個數組來遍歷;

  2. 刪除
    delete 運算符可以用來刪除對象的屬性

var obj = { 
    name: 'jack '
}
delete obj.name 
obj.name ==> undefined

刪除對象的屬性可能會讓來自原型鏈中的屬性透現出來

var obj = {
    name : 'jack'
}
Object.prototype.name = 'pony';
delete obj.name;
obj.name ==> 'pony'
  1. 減少全局變量污染
    全局變量削弱了程序的靈活性,應該避免使用

最小化使用全局變量的方法之一就是為你的應用只創建一個唯一的全局變量;

var module = {
    name: 'jack',
    init: function(){
          this.bindEvents();
    },
    bindEvents: function(){
        getName: function(){
           return name
        }
    }
}

永遠確保你的文件中只有module一個全局變量

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 官方中文版原文鏈接 感謝社區中各位的大力支持,譯者再次奉上一點點福利:阿里云產品券,享受所有官網優惠,并抽取幸運大...
    HetfieldJoe閱讀 2,621評論 9 22
  • 特別說明,為便于查閱,文章轉自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 679評論 0 1
  • 序 從最近的js入門系列的閱讀量逐步遞減,觀眾老爺的興趣也不再能夠接受一些細節性的地方深度挖掘,讓我有了一些思考。...
    zhaolion閱讀 1,643評論 5 19
  • 夏日的涼風吹動燥熱的心, 樹葉莎莎搖曳, 是風吹葉動? 還是葉舞伴風? 都不是, 是你那顆燥熱的心在動。 但我燥熱...
    慶小冬閱讀 423評論 0 1
  • 2017.10.3第3篇 星期二 陰 今天還是上班,國慶節也沒有好好陪伴兒子,心里有一些愧疚,為了生活,...
    鑫隆媽媽閱讀 99評論 0 0