日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript中的this讲解

發(fā)布時間:2024/7/23 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript中的this讲解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
查看this指向的一句話法則: 永遠指向其所在函數(shù)的所有者如果沒有所有者時,指向window。 理解this的要點:關(guān)鍵在于將函數(shù)與函數(shù)名分開看待。同一個函數(shù),在不同的執(zhí)行方法下,會有不同的效果 如何來進行理解呢,來看幾個實例 1)全局函數(shù)中的this指向

function test(){
alert(this);//test這個函數(shù)沒有所有者,因此此時this指向的是window
}

2)對象方法中的this指向

o.test = function(){

alert(this==o);//輸出true,o.test表示的是test這個函數(shù)的所有者是對象o,因此this應(yīng)當是指向o的

}

3)綁定函數(shù)時的this 1 如下代碼,test1和test2中this并不相同

var test2 = o.test1;//test2這個函數(shù)并沒有所有者,在此,test2雖然調(diào)用了test1這個函數(shù),但是this仍然指向window,而不是指向test1的擁有者:對象o
test2();
o.test1 = function(){

alert(this===o);

}

這便是上面所說的,要將函數(shù)與函數(shù)名分開看待 4)綁定函數(shù)時的this 2 此時如果我們對3)中的代碼進行一些修改:

function test () {
alert(this === o);
}
test();//this指向window
var o = {};
o.test2 = test;
o.test2();//此時test2的所有者為o,而test沒有所有者,this在此時指向的是o
alert(o.test2);

5)鼠標單擊事件等進行函數(shù)的綁定時,this的指向

document.onclick=function(){

alert(this===document);//輸出為true,onclick事件的擁有者是document。因此,此處this指向document。我們可以將document.onclick理解為一個對象方法,如同例4中的o.test2一樣。

}

6)setTimeout等傳參形式的this指向 不要去看傳的參數(shù)中函數(shù)的所有者,看執(zhí)行函數(shù)的所有var obj = {};

obj.x = 1;
obj.y = 2;
window.x = 100;
window.y = 200;
obj.add = function () {
alert(this.x + this.y);
}
setTimeout(obj.add,1000);//this指向window,輸出為300
setTimeout(function(){//this指向obj,輸出為3
obj.add();
},1000);

改變this的方法:call,apply call和apply(兩者用于改變函數(shù)的作用域)

var oo = {};
oo.test3 = function(){
alert(this == oo);//返回false
}
var ooo = {};
oo.test3.call(ooo);//this指向的是()內(nèi)的第一個參數(shù),此處為ooo

window.x = 100;
var oo = {};

oo.test3 = function(y,z,k){//函數(shù)的參數(shù)與apply、call中第二個以及之后的參數(shù)相對應(yīng)
alert(this.x+y+z+k);
}
var arr=[2,3,4]
oo.test3.call(window,2,3,4);//this指向window,輸出為109
oo.test3.apply(window,[2,3,4]);//同上,使用apply進行元素羅列時需要使用中括號[]將所有參數(shù)包裹起來
oo.test3.apply(window,arr);//同上,使用apply對于一個數(shù)組的訪問很簡單,使用數(shù)組名稱即可
oo.test3.call(window,arr[0],arr[1],arr[2]);//同上


轉(zhuǎn)載自:http://blog.163.com/hongshaoguoguo@126/blog/static/18046981201251935720333/

總結(jié)

以上是生活随笔為你收集整理的javascript中的this讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。