- 沿著作用域向上著最近的一個function(不是箭頭函數(shù))邀桑,看這個function最終是怎么執(zhí)行的
- this的指向取決于所屬function的調(diào)用方式,而不是定義
- function 調(diào)用一半分為這幾種情況:
1. 作為函數(shù)調(diào)用: foo()
指向全局對象(globalThis),嚴(yán)格模式下是undefined
2.作為方法調(diào)用科乎,即:foo.bar() /foo.bar.baz()/foo['bar'] /foo0
指向調(diào)用這個方法的對象
3.作為構(gòu)造函數(shù)使用壁畸,即: new Foo()
指向一個新對象 'Foo{ }'
4.特殊調(diào)用,即 foo.call() foo.apply() foo.bind()
參數(shù)指定成員
4.找不到所屬的function,就是全局對象
var length = 10
function fn() {
console.log(this.length)
}
const obj = {
length: 5,
method(fn) {
fn() // 作為函數(shù)調(diào)用 this.指向全局對象 10
arguments[0]() // 作為方法調(diào)用 this指向的是arguments對象 arguments.length為3
}
}
obj.method(fn, 1, 2)