更新時(shí)間:2021-12-03 09:22:37 來源:動力節(jié)點(diǎn) 瀏覽2498次
this 指向并不是在函數(shù)定義的時(shí)候確定的,而是在調(diào)用的時(shí)候確定的。換句話說,函數(shù)的調(diào)用方式(直接調(diào)用、方法調(diào)用、new調(diào)用、bind、call、apply、箭頭函數(shù))決定了 this 指向。
函數(shù)內(nèi)部的 this 指向全局對象,在瀏覽器中全局對象是 window,在 NodeJs 中全局對象是 global。直接調(diào)用并不是指在全局作用域下進(jìn)行調(diào)用,在任何作用域下,直接通過 函數(shù)名(...) 來對函數(shù)進(jìn)行調(diào)用的方式,都稱為直接調(diào)用。
函數(shù)中的 this 指向調(diào)用該方法的對象。通過對象來調(diào)用其方法函數(shù),它是 對象.方法函數(shù)(...) 這樣的調(diào)用形式。
在 es5 中,用 new 調(diào)用一個(gè)構(gòu)造函數(shù),會創(chuàng)建一個(gè)新對象,而其中的 this 就指向這個(gè)新對象。
箭頭函數(shù)沒有自己的 this 綁定,箭頭函數(shù)中使用的 this,其實(shí)是直接包含它的那個(gè)函數(shù)或函數(shù)表達(dá)式中的 this。
function person(name){
var _newObj = {
constructor:person,
_proto_:person.prototype
}
_newObj.constructor(name)
// _newObj.constructor.call(_newObj,name)
return _newObj
})()
如果您想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點(diǎn)的Vue.js視頻教程,視頻內(nèi)容由淺到深,通俗易懂,適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),相信對大家會有所幫助的。

初級 202925

初級 203221

初級 202629

初級 203743