this指向問題

2021-07-24 11:01:58 字數 896 閱讀 3184

一:this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件

例項一:函式this指向

function a()

a();

//undefined

//window

window.a();

//undefined

//window

解釋:這裡的a函式指向的是window;window.a();和a()指向的都是window

例項二:物件this指向

var o =

}}o.b.fn();

//12 此時的this指向的是b物件

var test = o.b.fn;
test();//this指向的是window,this.a 為undefined

解釋:

var test = o.b.fn;這樣賦值相對於
var test =function()
test這個函式是在window中的,window裡面並沒有定義全域性的變數a,所以this.a = undefined

例項三:建構函式this

function

fn()

var a = new

fn();

console.log(a.user);

//12

解釋:物件a.user獲得值為12,因為new關鍵字改變了this的指向,將這個this指向物件a,

2.如果函式中this,並且函式被上一級物件呼叫,this指向的就是上一級的物件。 3.

this指向問題

在普通的函式中this指向window 在定時器中指向window,其實普通的函式和定時器都是window下的方法,所以都指向window 在乙個物件中的方法中this批向當前物件 new了 綁事件是事件源 真正觸發的 function fn a,b var aa fn.call 普通模式下this...

this指向問題

但是有時候這樣的判斷並不準確,可以按照如下規則進行判斷。瀏覽器環境 無論是否在嚴格模式下,在全域性執行環境中 在任何函式體外部 this 都指向全域性物件window node 環境 無論是否在嚴格模式下,在全域性執行環境中 在任何函式體外部 this 都是空物件 如果是new繫結並且 建構函式返回...

This指向問題

1.普通函式呼叫 普通函式內部的this就指向window function fn fn window.fn 誰呼叫這個方法,方法的內部this就指向誰,window呼叫 2.方法呼叫,this指向的就是呼叫該方法的物件 var object object.fn 3.構造函式呼叫,this指向的就是...