當前位置:編程學習大全網 - 熱門推薦 - js-改變this指向的幾種方法

js-改變this指向的幾種方法

javaScript 為我們專門提供了壹些函數方法來幫我們更優雅的處理函數內部 this 的指向問題,常用的有 bind()、call()、apply() 三種方法

call() 方法調用壹個對象。簡單理解為調用函數的方式,但是它可以改變函數的 this 指向。

fun.call(thisArg, arg1, arg2, ...)

thisArg:在 fun 函數運行時指定的 this 值

arg1,arg2:傳遞的其他參數

返回值就是函數的返回值,因為它就是調用函數

因此當我們想改變 this 指向,同時想調用這個函數的時候,可以使用 call,比如繼承

fun.apply(thisArg, [argsArray])

thisArg:在fun函數運行時指定的 this 值

argsArray:傳遞的值,必須包含在數組裏面

apply 主要跟數組有關系,比如使用 Math.max() 求數組的最大值

bind() 方法不會調用函數。但是能改變函數內部this 指向

fun.bind(thisArg, arg1, arg2, ...)

thisArg:在 fun 函數運行時指定的 this 值

arg1,arg2:傳遞的其他參數

返回由指定的 this 值和初始化參數改造的原函數拷貝

因此當我們只是想改變 this 指向,並且不想調用這個函數的時候,可以使用 bind

相同點:

都可以改變函數內部的this指向.

區別點:

1.call 和 apply 會調用函數, 並且改變函數內部this指向.

2.call 和 apply 傳遞的參數不壹樣, call 傳遞參數 aru1, aru2..形式 apply 必須數組形式[arg]

3.bind 不會調用函數, 可以改變函數內部this指向.

主要應用場景:

1.call 經常做繼承.

2.apply 經常跟數組有關系. 比如借助於數學對象實現數組最大值最小值

3.bind 不調用函數,但是還想改變this指向. 比如改變定時器內部的this指向。

  • 上一篇:日本那部《蛇舌》的電影怎麽找不到啊
  • 下一篇:植物大戰僵屍2的禮包激活碼是多少
  • copyright 2024編程學習大全網