在js中this的指向對於新手來說一定是個難題,但是如果你真正理解了的話,也就沒什麼問題啦,下面就來講講this吧。
JS中,this的值取決於調用的模式(調用對象),而JS中共有4種調用模式:
1.函數調用模式
當一個函數不是一個對象的屬性時,當作函數倆調用,這時函數內的this指向全局對象(大對數情況下是window)
window.value=1; function getValue(){ console.log(this.value); } getValue();//輸出1,此時的this指向window
2.方法調用模式
當一個函數是一個對象的屬性時,我們稱它為該對象的一個方法,當一個方法被調用時,this指向該對象
var Obj={ value:2, getValue:function(){ console.log(this.value);//輸出2,this指向Obj } }
!!!該模式中,this到對象的綁定發生在方法被調用時
3.構造器調用模式
使用new調用的函數稱為構造器函數,此時的this指向該構造器函數實例出來的對象
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調用模式以及bind
apply、call、bind方法可以讓我們設定調用者中的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的指向就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。