關於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 ...