成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript 中的 bind()、apply() 和 call()鮮為人知的區別

開發 前端
每個開發人員都應該充分了解它們的工作原理,并能夠辨別它們之間的細微差別。

每個開發人員都應該充分了解它們的工作原理,并能夠辨別它們之間的細微差別。

所以你知道,JS 函數是一等公民。

這意味著:它們都只是對象值——Function 類的所有實例,具有方法和屬性:

因此 bind()、apply() 和 call() 是每個 JavaScript 函數都具有的 3 個基本方法。

bind()

你是否和我一起經歷過 React 早期的痛苦歲月;那時我們還在使用這樣的類組件和事件處理程序?

這只是 bind() 的多種應用之一——一種被嚴重低估的 JavaScript 方法。

如果沒有 bind(),sayName() 會一團糟——alert() 永遠無法工作。

因為 React 內部對這個方法做了一些可疑的事情,完全搞砸了 this 內部的含義。

之前 sayName 完全可以毫無問題地顯示警報——就像在這個其他類中一樣:

但猜猜 React 在幕后對greet事件處理程序方法做了什么?

它將其重新分配給另一個變量:

猜猜會發生什么——它無處可尋:

這就是 bind 發揮作用的地方——它將 this 更改為您選擇的任何實例對象:

因此,我們將函數綁定到對象——綁定目標。

(我知道它是“綁定的”,但我們可以說它是綁定的,就像我們將“index”而不是“indices”說成“indexes”一樣)。

它是不可變的——它返回綁定函數而不改變原始函數的任何內容。

這讓我們可以盡可能多地使用它:

vs call()

call 和 bind 之間只有很小的區別。

bind 創建綁定函數供您隨意使用。

但是 call?它會動態創建一個臨時綁定函數并立即調用它:

因此, call() 基本上就是 bind() + 一個調用。

但是當函數有參數時怎么辦呢?我們該怎么辦?

完全沒問題 — 只需將它們作為更多參數傳遞給call即可:

你實際上可以使用 bind() 做同樣的事情:

vs apply()

一開始你可能會認為 apply() 和 call() 做的事情完全一樣:

但就像 bind() 與 call() 一樣,需要注意一個細微的差別:

傳遞的參數:

我使用一個助記技巧來記住兩者的區別:

  • call() 用于逗號
  • apply() 用于數組

回顧總結

  • bind()——綁定到此并返回一個新函數,可重復使用。
  • call()——綁定 + 調用函數,使用逗號傳遞參數。
  • apply()——綁定 + 調用函數,使用數組傳遞參數。
責任編輯:華軒 來源: web前端開發
相關推薦

2024-08-26 08:36:26

2024-03-15 08:21:17

bindJavaScrip函數

2019-12-12 20:49:05

JavaScript語言運算符

2024-08-26 14:35:19

JavaScript關鍵字對象

2021-12-05 08:27:56

Javascript 高階函數前端

2021-06-18 07:16:17

JavaScript apply()方法call()方法

2024-03-04 16:32:02

JavaScript運算符

2010-01-07 10:05:51

IT顧問特質

2020-03-27 22:33:30

JavaScript運算符逗號

2024-09-10 08:35:57

2024-03-21 14:27:13

JavaScript數組

2009-02-09 09:16:28

熱鍵自注銷漏洞

2011-03-22 09:49:15

JavaScript

2011-05-03 13:13:52

編程PHPJava

2014-04-22 16:38:12

GitHubGitHub 使用技巧

2015-03-02 09:22:09

Javascript函數用法apply

2017-10-10 14:36:07

前端Javascriptapply、call、

2024-05-07 00:00:00

工具類開發者功能

2009-09-14 09:45:20

Chrome谷歌操作系統

2023-04-23 15:11:26

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产综合久久精品图片 | 国产在线视频99 | 国产伦精品一区二区三区四区视频 | 国产一区二区小视频 | 欧美日韩综合精品 | 91tv在线观看 | 九九热国产精品视频 | 久久免费高清视频 | 国产精品99久久久久久动医院 | 视频1区| 超碰网址 | 久久久久网站 | 男女羞羞视频在线观看 | 久久久久国产精品午夜一区 | 狠狠干综合视频 | 国产精品1区 | 欧美日韩18 | 国产一区中文 | 国产免费黄网 | 97av在线| 视频一区在线观看 | 黄色大片免费网站 | 伊人伊人伊人 | 国产免费一区二区三区免费视频 | 久久99国产精品 | 秋霞a级毛片在线看 | 午夜精品久久久久久久 | 日韩在线中文字幕 | 欧美性久久久 | 亚洲精品成人av久久 | 国产精品视频免费观看 | 成人a在线观看 | 国产一级免费视频 | 久久精品 | 亚洲精品一区二区三区在线 | 久久精品国产免费看久久精品 | 韩日一区二区三区 | 国产精品国产a级 | 日韩福利在线 | 午夜视频在线 | 国产日韩亚洲欧美 |