成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

改變JavaScript中this指向的技巧

在ES5中,this的指向遵循一個基本原理:this永遠指向最后調(diào)用它的那個對象。這句話可以說是程序員們必須牢記的基本常識。讓我們來通過幾個例子來解釋這個概念。 最簡單的例子:例1在例1中,函數(shù)a()

在ES5中,this的指向遵循一個基本原理:this永遠指向最后調(diào)用它的那個對象。這句話可以說是程序員們必須牢記的基本常識。讓我們來通過幾個例子來解釋這個概念。

最簡單的例子:例1

在例1中,函數(shù)a()被調(diào)用,在全局環(huán)境下相當(dāng)于window.a()。因為this永遠指向最后調(diào)用它的那個對象,所以這里的this指向全局對象window。

對象調(diào)用函數(shù)的例子:例2

在例2中,函數(shù)fn是對象a調(diào)用的,所以打印的值就是對象a中的name的值。如果稍作修改,依然會指向?qū)ο骯。

this的值為undefined的情況:例4

即使對象a中沒有定義name屬性,最后調(diào)用fn的對象仍然是a,所以的值是undefined。這再次說明了this永遠指向最后調(diào)用它的那個對象。

改變this的指向:箭頭函數(shù)和_this

使用ES6的箭頭函數(shù)可以避免this指向混亂的問題。箭頭函數(shù)的this始終指向函數(shù)定義時的this,而非執(zhí)行時的this。需要注意的是,箭頭函數(shù)中沒有this綁定,必須通過查找作用域鏈來決定其值。

在函數(shù)內(nèi)部使用_this this

如果不使用ES6,一種簡單的方式是在函數(shù)內(nèi)部將調(diào)用函數(shù)的對象保存在變量_this中,確保this不會發(fā)生改變。

使用apply、call、bind方法

apply、call、bind函數(shù)是可以改變this指向的常用方法。apply方法和call方法的區(qū)別在于傳入?yún)?shù)的形式不同,前者接收數(shù)組作為參數(shù),后者接收若干個參數(shù)列表。

區(qū)分apply、call、bind

apply和call基本類似,只是傳入的參數(shù)形式有所不同。而bind方法則是創(chuàng)建一個新的函數(shù),需要手動去調(diào)用。

通過上述例子和方法,我們可以更好地理解并靈活運用JavaScript中this指向的技巧。愿這些技巧能幫助你更好地處理this關(guān)鍵字的使用。

標(biāo)簽: