幾個例子深刻理解this

2021-10-23 03:20:43 字數 1028 閱讀 1043

/*this:

* 1. 解析器在每次呼叫函式的時候都會傳遞乙個隱含引數this,指向乙個物件(稱為函式執行的上下文物件)

* 2. 任何函式本質上都是通過某個物件來呼叫的,如果沒有指定,則這個物件為window

* 3. 以方法的形式呼叫,this就指向呼叫方法的那個物件*/

/*總結:

* 1. test() window

* 2. p.test() p

* 3. new test() 新建立的物件

* */

var name =

'全域性name'

//var有變數提公升,window中有name,換成let const window中無name

function

fun(

)let obj =

fun(

) obj.

getname()

function

fun(name)

this

.setname

=function

(name)

}fun

('li'

)//this為window

let p =

newfun()

//此語句會執行,this為新建立的物件fun,而p指向這個物件,所以也能說指向p

p.getname()

//fun物件(p) p.getname獲得getname這個函式

let obj =

p.setname.

call

(obj,

'wang'

)//obj

let x = p.

setname()

//fun物件(p)

let y = p.setname

y()//window

functionf1(

)f2()

}f1()

//f1()其實就是執行f2(),而f2()沒有呼叫,所以為window

深刻理解IdentityHashMap

新建pojo package test public class cat public string getname public void setname string name public integer getage public void setage integer age public...

深刻理解IdentityHashMap

新建pojo package test public class cat public string getname public void setname string name public integer getage public void setage integer age public...

JS深刻理解補充

對於函式的理解,首先看乙個函式定義 function functiondefined 顯而易見,functiondefined 為函式名字,在js中為指向這個函式體的指標,代表這個函式的指標的變數,並且和原始資料型別一樣儲存在棧中。而functiondefined函式體則儲存在堆中。每當new出乙個...