概述javascript部分核心機制

NO IMAGE

javascript

  • scope chain
  • context(this指向)
  • excution context

scope chain

即執行環境(execution environment)
即一條執行時才會建立的定義時已經決定了(liao)的鏈。

概述javascript部分核心機制

context(this指向)

this === context

var name = '亞索'
// 1-------------------------------------------------------
var obj = {
name: '銳雯',
readName: function() {
console.log(this.name)
}
}
obj.readName()
// bind用法
obj.readName.bind(this)  //invalid
var otherFn = obj.readName
otherFn.bind(this)
otherFn()
// call用法
obj.readName.call(this)
// apply用法
obj.readName.apply(this)
// 2--------------------------------------------------------
function readName() {
(function ad() {
console.log(this.name)
})()
}
readName()
// 3-------------------------------------------------------
function Person(name) {
this.name = name
}
console.log(new Person(name).name)
// 4-------------------------------------------------------
var obj2 = {
readName: () => {
console.log(this.name)
}
}
obj2.readName()
obj2.readName.call(this)

結果請複製到控制檯執行後查看結果

注:箭頭函數其實沒有自己的this指針,它只是一個語法糖

箭頭函數
var bbb = {
name: '銳萌萌',
normalFn: function b () {
return () => {
console.log(this.name)
}
},
arrowFn: function b () {
let _this = this
return function () {
console.log(_this.name)
}
}
}

excution context

我們理解JS引擎時所瞭解的棧即為執行環境棧。比如我們用語言模擬一段腳本執行到function後發生的一系列動作。

創建階段(creation phase)

  1. 創建一個變量對象(也稱活動對象)常常由定義在當前執行環境中的內部變量、內部function以及參數組成,且僅能被解析器訪問
  2. 初始化作用域鏈
  3. this指針被最終確定
  4. 推入堆棧並獲取控制權

執行階段(execution phase)

  1. 代碼在當前執行環境中執行,執行完成後pop出當前執行環境,並將控制權移交給上一級執行環境

相關文章

深入理解Java中protected修飾符

概述nodejs模塊系統核心原理

Vue+GraphQL初試

概述nodejs核心機制