javascript實(shí)現(xiàn)方法調(diào)用與方法觸發(fā)小結(jié)
在js中,this關(guān)鍵字是一個(gè)比較讓人有意思的東西,但是它的指向經(jīng)常讓初學(xué)者摸不著頭腦。
其實(shí)要理解這個(gè)關(guān)鍵字,需要理清兩個(gè)問(wèn)題——“方法的調(diào)用和方法的觸發(fā)”
下面先看一段代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>function</title>
<script>
function showThis(){
console.info(this);
}
function Test1(){
this.f=showThis;
}
function Test2(){
this.f=function(){
showThis();
}
}
showThis();//window
new Test1().f();//Test1
new Test2().f();//window
</script>
</head>
<body>
</body>
</html>
20行打印出window對(duì)象,這個(gè)很容易理解,但是21行打印出Test1的實(shí)例對(duì)象,而22行卻打印出window對(duì)象。查看Test1和Test2的構(gòu)造,發(fā)現(xiàn)方法f最終都執(zhí)行了showThis方法。但是showThis中的this指向卻不同。這是因?yàn)門est1中的f方法直接指向showThis,new Test1().f()是以Test1 的實(shí)例直接調(diào)用showThis方法,調(diào)用者是Test1的實(shí)例。而new Test2().f()是在Test2的實(shí)例方法f中觸發(fā)window對(duì)象的showThis方法,其中的this就是指向其調(diào)用者window而不是觸發(fā)者Test2的實(shí)例。
至此可以發(fā)現(xiàn)。this指向的是調(diào)用者,而觸發(fā)者只是推進(jìn)調(diào)用者執(zhí)行指定方法而已。
相關(guān)文章
Js刪除數(shù)組中某一項(xiàng)或幾項(xiàng)的幾種方法(推薦)
下面小編就為大家?guī)?lái)一篇Js刪除數(shù)組中某一項(xiàng)或幾項(xiàng)的幾種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
javascript實(shí)現(xiàn)Java中的Map對(duì)象功能的實(shí)例詳解
這篇文章主要介紹了javascript 自定義對(duì)象實(shí)現(xiàn)Java中的Map對(duì)象功能的相關(guān)資料,這里實(shí)現(xiàn)這樣的功能,幫助大家理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08
javaScript array(數(shù)組)使用字符串作為數(shù)組下標(biāo)的方法
這篇文章主要介紹了javaScript array(數(shù)組)使用字符串作為數(shù)組下標(biāo)的方法,大家可以測(cè)試一下看看2013-11-11
js實(shí)現(xiàn)checkbox全選和反選示例
這篇文章主要介紹了js實(shí)現(xiàn)checkbox全選和反選示例,需要的朋友可以參考下2014-05-05
Javascript排序算法之合并排序(歸并排序)的2個(gè)例子
這篇文章主要介紹了Javascript排序算法之合并排序(歸并排序)的2個(gè)例子,需要的朋友可以參考下2014-04-04

