老生常談 js中this的指向
在js中this的指向?qū)τ谛率謥碚f一定是個難題,但是如果你真正理解了的話,也就沒什么問題啦,下面就來講講this吧。
JS中,this的值取決于調(diào)用的模式(調(diào)用對象),而JS中共有4種調(diào)用模式:
1.函數(shù)調(diào)用模式
當一個函數(shù)不是一個對象的屬性時,當作函數(shù)倆調(diào)用,這時函數(shù)內(nèi)的this指向全局對象(大對數(shù)情況下是window)
window.value=1;
function getValue(){
console.log(this.value);
}
getValue();//輸出1,此時的this指向window
2.方法調(diào)用模式
當一個函數(shù)是一個對象的屬性時,我們稱它為該對象的一個方法,當一個方法被調(diào)用時,this指向該對象
var Obj={
value:2,
getValue:function(){
console.log(this.value);//輸出2,this指向Obj
}
}
!?。≡撃J街?,this到對象的綁定發(fā)生在方法被調(diào)用時
3.構(gòu)造器調(diào)用模式
使用new調(diào)用的函數(shù)稱為構(gòu)造器函數(shù),此時的this指向該構(gòu)造器函數(shù)實例出來的對象
function main(val){
this.value=val;
}
main.prototype.getValue=function(){
console.log(this.value);
}
var fun=new main(3);
fun.getValue();
fun.value;//輸出3,this指向main的實例對象fun
4.apply/call調(diào)用模式以及bind
apply、call、bind方法可以讓我們設(shè)定調(diào)用者中的this指向誰
function showValue(){
console.log(this.value);
}
var obj={
value:4
}
showValue.call(obj)//輸出4,this指向了obj對象
ECMA5中新增了bind方法,具體用法可以google一下,這里是演示this綁定的用法
function showValue(){
console.log(this.value);
}
var obj={
value:4
}
var showValue2=showValue.bind(obj);
showValue2()//輸出4,this指向了obj對象
bind有很多種用法,可以自己去查閱一下哦
以上這篇老生常談 js中this的指向就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript利用正則表達式替換字符串中的內(nèi)容
本文主要介紹了JavaScript利用正則表達式替換字符串中內(nèi)容的具體實現(xiàn)方法,并做了簡要注釋,便于理解。具有一定的參考價值,需要的朋友可以看下2016-12-12
JS實現(xiàn)將數(shù)字金額轉(zhuǎn)換為大寫人民幣漢字的方法
這篇文章主要介紹了JS實現(xiàn)將數(shù)字金額轉(zhuǎn)換為大寫人民幣漢字的方法,涉及javascript字符串與數(shù)組操作的相關(guān)技巧,需要的朋友可以參考下2016-08-08
JavaScript基礎(chǔ)知識及常用方法總結(jié)
JAVASCRIPT是AJAX技術(shù)中不可或缺的一部分,所以想學好AJAX以及現(xiàn)在流行的AJAX框架,學好JAVASCRIPT是最重要的,通過本篇文章給大家介紹javascript基礎(chǔ)知識及常用方法總結(jié),對js基礎(chǔ)知識及常用方法相關(guān)知識感興趣的朋友一起學習吧2016-01-01

