你不知道的JS(上) 【總結】

Z-index發表於2017-09-23

可以從兩方面來說,學習 && 工作(業務程式碼方面的)

學習

個人從中學習到了,很多別的 JS 書並不會講的 JS 方面的深層次知識點,或者說,沒這本書說得清晰;

工作

個人從事的業務程式碼比較多,並沒有書中的學識轉化為生產力或者說提升了生產效率;


下面本人理解目前理解比較有深且目前有用知識的總結

LHS 查詢:賦值操作的目標是誰;

RHS 查詢:誰是賦值操作的源頭;

瞭解了兩種查詢模式後,一部分程式碼為何頻頻,出現宣告問題;

作用域

函式作用域:屬於這個函式的全部變數都可以在整個函式範圍內使用及複用 **這種設計方案,充分利用 JavaScript 變數可以根據需要改變值型別的“動態”特性*

函式表達的幾種模式:

(function(){})             // 函式表示式

function(){}               // 函式宣告

(function(){})()           // 立即執行函式表示式
(function(){}())           // 立即執行函式表示式

//函式表示式進階用法
(function IIFE(global){
    //...
})(window)

模組的兩個特徵:

  1. 為建立內部作用域而呼叫了一個包裝函式;
  2. 包裝函式的返回值必須至少包括一個對內部函式的引用,這樣就會建立涵蓋整個包裝函式內部作用域的閉包;

this 在執行時進行繫結,this 的繫結取決於函式的呼叫方式

繫結規則 & 順序:

new > call && apply && bind > 顯式繫結 > 預設繫結;

JavaScript 只有物件:物件兩種定義形式

//1. 文字形式
var obj = {
    key: value
}

//2. 構造形式
var obj = new Object()
obj.key = value

物件的內容是由一些儲存在特定命名位置的值組成的,亦為屬性

物件來儲存鍵值對,陣列來儲存數值下表/值對

屬性描述符 (Obj.getOwnPropertyDesciptor) 三個特性:writable,enumerable,configurable 預設值為 true

使用 Object.defineProperty(obj, 'a', {}) 來修改或新增屬性

結合屬性描述的修改可以達到幾個效果

  • 常量:writable:false && configurable:false
  • 禁止擴充套件:Object.preventExtensions(obj)
  • 密封:Object.seal(obj)
  • 凍結:Object.freeze(obj)

總結

原型,原型鏈,類,委託,這樣的程式碼,體驗還沒那麼深,也就大概瞭解一點,所以就不總結了;

如果發現本文有差錯誤的地方,請一定要告知,感激不敬

感謝閱讀~

相關文章