国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

改變JavaScript中this指向的技巧

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

在ES5中,this的指向遵循一個(gè)基本原理:this永遠(yuǎn)指向最后調(diào)用它的那個(gè)對(duì)象。這句話可以說(shuō)是程序員們必須牢記的基本常識(shí)。讓我們來(lái)通過(guò)幾個(gè)例子來(lái)解釋這個(gè)概念。

最簡(jiǎn)單的例子:例1

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

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

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

this的值為undefined的情況:例4

即使對(duì)象a中沒(méi)有定義name屬性,最后調(diào)用fn的對(duì)象仍然是a,所以的值是undefined。這再次說(shuō)明了this永遠(yuǎn)指向最后調(diào)用它的那個(gè)對(duì)象。

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

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

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

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

使用apply、call、bind方法

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

區(qū)分apply、call、bind

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

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

標(biāo)簽: