DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 老生常談 js中this的指向
老生常談 js中this的指向
編輯:關於JavaScript     

在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的指向就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved