js常見this指向問題

2021-09-24 16:13:10 字數 1931 閱讀 6559

關於this的總結

//全域性環境 和 普通函式中this指的是是windows

console.

log(

this

)//windows

function

abc(

)abc()

//事件中的this是被偵聽的物件 document

document.

addeventlistener

("click"

,clickhander)

function

clickhander

(e)//物件方法中的this 指的是當前的函式所在的物件

var obj =

} obj.b(

)//obj

var obj2 = object.

create

(obj)

obj2.name=

"zhang san"

obj2.b(

)// obj2 原型鏈繼承

//建構函式中this指代的是new出來的物件

function

person()

person.prototype=

} one =

newperson()

one.c(

)//建構函式es6 this指代的也是new出來的物件

class

ball

paly()

} ball =

newball()

ball.

paly()

function

bindhander

(a,b)

bindhander(3

,5) console.

log(

this

.a,this

.b)// 3 5 this 指的是windows會為windows增加兩個變數a和b

var objs =

; bindhander.

call

(objs,3,

5)console.

log(objs)

// this 指的是objs 並且增加兩個屬性a b 值為 3 5

bindhander.

(objs,[3

,5])

//接受兩個引數 且第二個必須是陣列

console.

log(objs)

// this 指的是objs 並且增加兩個屬性a b 值為 3 5

bindhander.

bind

(objs)(3

,5);

console.

log(objs)

// this 指的是objs 並且增加兩個屬性a b 值為 3 5

//閉包中的this

var name =

"windows"

var object =}}

console.

log(object.

getname()

())// windows

var name =

"windows"

var object =}}

console.

log(object.

getname()

())// object

var name =

"windows"

var object =

} console.

log(object.

getname()

)// object

console.

log(

(object.getname)()

)// object

<

/script>

JS中this指向問題

解析器在呼叫函式時,每次都會向函式內部傳遞進乙個隱含的引數,這個隱含的引數就是this,this指向的是乙個物件,這個物件我們稱之為函式執行的上下文物件,根據函式的呼叫方式不同,this會指向不同的物件.簡單來說一下函式中this指向問題,1.this是什麼?任何函式本質上都是通過某個物件來呼叫的,...

JS指this指向問題

最近出去面試,筆試題總是會有關於this,指向的問題。但每次回答都不太理想,遂去網上看了一些部落格,整理了一些分享給大家。this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定,this最終指向呼叫它的物件。1.函式呼叫模式 當乙個函式並非乙個物件的屬性時,那麼它就是被當做函式來呼叫...

JS中this指向問題

函式內部的this之和函式的呼叫方式有關,和函式的定義方式沒有關係functionfn fn windowvar obj obj.fn obj functionfn 或者可以這樣寫自呼叫函式 functionfn div document.queryselector div div.onclick ...