簡體   English   中英

箭頭功能與綁定功能

[英]Arrow function vs. bound function

在閱讀文章時,我對以下引用感到有些困惑。

這里的問題是每次遇到=>時,它都會創建一個新的箭頭函數副本。

每次新作品的作者是什么意思? 什么的新副本? 什么是每次 我在哪里可以找到一個完全包含箭頭功能的使用和執行流程的參考, 每次都創建一個新的副本

如果作者寫了一個箭頭函數的新實例那將是很清楚的。 但他寫了一個箭頭功能的新副本 此外,請不要給我更多關於箭頭功能如何工作的MDN的簡化解釋。 只是回答為什么作者寫副本而不是實例或者不是。 並回答每次在他的文章和代碼塊的上下文中發生的情況。

const fn = () => {}

與舊的基本相同

const fn = (function(){}).bind(this);

Function.prototype.bind在每次調用時返回一個新函數。 這就是為什么在某個地方存儲綁定函數而不是在每次遭遇時創建它的好主意。

它屬於一個事實,即箭頭功能不能使用this你可能會從其他的東西知道它的方式。 您不能將任何上下文綁定或傳遞給箭頭函數。 並且該bind始終會創建函數對象的副本。

這一起解釋了文章中的示例。 首先,他們使用一個正常的功能,能夠綁定this吧。 在第二步中,它們使用具有正確綁定的function的新副本覆蓋原始function對象本身。 這是一個巨大的性能提升,因為你只需要做一次,而不是將來的任何電話。

this問題的一個例子:

 function testNormal() { // 'this' is the object, passed below by 'bind' console.log(this); } var testArrow = () => { // 'this' is always the current parent // there is no way to pass an other value to 'this' in an arrow function console.log(this); } testNormal.bind({data: 'test'})(); testArrow.bind({data: 'test'})(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM