2. 原型鏈_作用域鏈_預處理_預解析
阿新 • • 發佈:2018-12-30
1. 談談原型
能夠實現繼承,物件查詢屬性的規則
例項物件的隱式原型的值 為其 對應建構函式的 顯式原型的值
- prototype 顯示原型屬性
所有函式都有顯示原型屬性
- __proto__ 隱式原型屬性
所有例項物件都有隱式原型屬性
所有函式都是 Function 的例項
Function 是通過 new 自己產生的例項
2. 談談原型
由多個隱式原型屬性構成的鏈狀結構就是原型鏈
作用: 用來查詢物件的 屬性/方法
先自身找,找不到再去 __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. 完整原型圖
https://www.cnblogs.com/tianxiaxuange/p/9800827.html