執行上下文

2021-09-30 20:43:32 字數 2105 閱讀 6522

js原理:原型鏈、執行上下文、事件迴圈

預備知識

1 棧 stack

棧是類似於陣列的一種資料結構。

2物件引用

//user1指向使用者物件

//user1持有使用者物件的引用

var user1=

var user2=user1;

user2.name="張三";

console.log(user1.name,user2.name);//張三 張三

概念

執行上下文:某個函式或全域性**的執行環境,該環節中包含執行**需要的所有資訊

可以簡單的理解為 執行上下文是乙個物件,物件中包含了執行**所需要的資訊

當執行乙個函式時,需要建立執行上下文,才正式開始執行

call stack(執行上下文棧):組織管理程式執行過程中的執行上下文

var a =2;

function bar()

foo();

console.log("123");

}function method()

bar();

執行棧:

-console.log函式的執行上下文

-method函式的執行上下文

-foo函式的執行上下文

-bar函式的執行上下文

-棧底:全域性執行上下文

//永遠執行棧頂的上下文,執行完乙個就pop

執行上下文的內容

vo:variable object ,變數物件,存放的是函式或全域性**執行過程中需要用到的區域性變數

scope:作用域

this

vo是乙個物件,呼叫函式或執行全域性**時建立

function foo(a,b)

}foo(3,4);

foo函式的執行上下文建立過程:

bar:指向乙個函式}}

建立vo物件

1.確定形參值

2確定函式中所有的函式字面量宣告

1.該函式必須是字面量宣告,字面量宣告提取到vo後,該宣告失效

2如果當前vo**現同名屬性,直接覆蓋

3確定函式中所有的變數宣告(var).將其提取到上下文中,值為underdifined

1如果當前vo**現同名屬性,忽略

function foo(a,b)

var a=function()

a(); //b

var a=10;

console.log(a); //10

}

vo{

a:3,--》指向函式a--》指向函式b————》10

b:4,

var foo=1;

function bar()

console.log(foo); //10

}

var a=1;

function b()

}b();

console.log(a); //1  函式結束,執行上下文消失

console.log(foo);		//fn指向c

var foo="a";

console.log(foo); // a

var foo=function()

console.log(foo); // fn指向函式b

foo(); //b

function foo()

console.log(foo); //fn指向b

foo(); //b

執行上下文

1.分類 位置 全域性 函式 區域性 2.全域性執行上下文 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 w...

this執行上下文

this的指向為 誰呼叫當前this所在的函式,this就指向誰。也就是說,當前呼叫函式的那個物件自身就是this,就是當前的執行上下文。被滑鼠事件,鍵盤事件等觸發的函式 叫做事件處理函式,事件處理函式的this指向事件源 觸發事件的節點 事件處理函式第乙個引數是事件物件 備註 有名函式的this指...

執行上下文

1.分類 位置 全域性 函式 區域性 2.全域性執行上下文 在執行全域性 前,將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined 新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 ...