關於 this 指向問題

2021-10-24 20:36:24 字數 896 閱讀 1900

一、面試題

function foo () 

foo() // => 全域性物件

foo.call(123) // => 123

二、面試題

const obj1 = 

}// obj1.foo() // => obj1

const fn = obj1.foo

fn()

三、面試題

const obj2 = 

bar()

}}obj2.foo()

沿著作用域向上找最近的乙個 function(不是箭頭函式),看這個 function 最終是怎樣執行的;

this 的指向取決於所屬 function 的呼叫方式,而不是定義;

function 呼叫一般分為以下幾種情況:

作為函式呼叫,即:foo()指向全域性物件(globalthis),注意嚴格模式問題,嚴格模式下是 undefined

作為方法呼叫,即:foo.bar()/foo.bar.baz()/foo['bar']/foo[0]()指向最終呼叫這個方法的物件

作為構造函式呼叫,即:new foo()指向乙個新物件foo {}

引數指定成員

找不到所屬的 function,就是全域性物件

4、面試題

var length = 10

function fn ()

const obj =

}obj.method(fn, 1, 2)

關於this的指向問題

呼叫方式有以下四種只需要記住一點,this的指向取決於以什麼樣的方式去呼叫它 1 函式呼叫模式 funcction fn fn 那麼此時的this,指向的是我們的windows 2 方法呼叫模式 var obj obj.sayhi obj.sayhi 裡面的this 那麼必定指向這個 obj 3 構...

關於this指向

this是js中乙個難點,通常來講,this就是指向當前的執行環境,js物件可以看成全域性物件和區域性物件,當函式直接在全域性環境中執行,則this指向全域性物件 function foo foo 輸出window 第二種,當this在物件中的時候,this 指向的是該物件 var obj obj....

關於js中的this指向問題

1.在普通函式和全域性環境下 this指向window function demo demo console.log this x 102.建構函式 建構函式就是函式new出來的物件,所以this指向該物件 function foo var foo newfoo console.log foo.x ...