2. 原型鏈_做用域鏈_預處理_預解析

1. 談談原型html

可以實現繼承,對象查找屬性的規則函數

實例對象的隱式原型的值 爲其 對應構造函數的 顯式原型的值this

  • prototype 顯示原型屬性

全部函數都有顯示原型屬性spa

  • __proto__ 隱式原型屬性

全部實例對象都有隱式原型屬性prototype

全部函數都是 Function 的實例htm

Function 是經過 new 本身產生的實例對象

2. 原型鏈blog

 由多個隱式原型屬性構成的鏈狀結構就是原型鏈繼承

做用: 用來查找對象的 屬性/方法原型鏈

先自身找,找不到再去 __proto__ 找,最終找到 Object.prototype.__proto__ 上,返回 undefined

3. 做用域鏈

多個上下級關係的做用域造成的鏈, 它的方向是從小向大的(從內到外)

做用:查找變量的規則

先自身做用域找,找不到再上一級找,最終來到全局做用域,找不到就報錯(xxx is not defined)

4. 預解析、預處理作了什麼事?

  • 全局代碼:
  • js 引擎在將要執行全局代碼以前,建立一個全局執行上下文對象 window
  • 將 var 關鍵字聲明的變量,添加爲 window 屬性,值爲 undefined
  • 將 function 關鍵字聲明的函數,添加 window 方法,值爲函數體
  • 肯定全局 this 指向,指向爲 window
  • 函數代碼:
  • js 引擎在將要執行函數代碼以前,建立一個函數執行上下文對象(沒辦法直接操做)
  • 將 var 關鍵字聲明的變量,添加爲函數執行上下文對象屬性,值爲undefined
  • 將 function 關鍵字聲明的函數,添加函數執行上下文對象方法,值爲函數體
  • 將形參賦值爲實參,添加爲函數執行上下文對象的屬性
  • 將傳入的實參添加到 arguments 中, 添加爲函數執行上下文對象的屬性
  • 肯定 this 的指向, 添加爲函數執行上下文對象的屬性

5. 完整原型圖

http://www.javashuo.com/article/p-gfquxsnv-h.html

相關文章
相關標籤/搜索