摘要:在我們實際使用中經(jīng)常用的箭頭函數(shù)來代替提取對象的方法如果將一個對象的方法作為回調(diào)函數(shù)傳入你需要定義一個確定的否則它將作為一個函數(shù)來執(zhí)行值可能是也可能是全局對象例如另一種解決方案就是使用箭頭函數(shù)譯者注原文評論中也提到了的綁定運算符如下作為參數(shù)
在我們實際使用中,經(jīng)常用ES6的箭頭函數(shù)來代替Function.prototype.bind().
1.提取對象的方法如果將一個對象的方法作為回調(diào)函數(shù)傳入,你需要定義一個確定的this,否則它將作為一個函數(shù)來執(zhí)行(this值可能是undefined, 也可能是全局對象).例如:
obj.on("anEvent", console.log.bind(console))
另一種解決方案就是使用箭頭函數(shù):
obj.on("anEvent", x => console.log(x))
譯者注: 原文評論中也提到了ES7的綁定運算符, 如下:
obj.on("anEvent", ::console.log)2.this作為參數(shù)
下面的代碼展示了一個小技巧:對于一些方法,你可能不需要用bind()來為回調(diào)函數(shù)綁定this,這類方法允許你在額外的參數(shù)中定義this的值..filter()就是這樣一類方法:
const as = new Set([1, 2, 3]); const bs = new Set([3, 2, 4]); const intersection = [...as].filter(bs.has, bs); // [2, 3]
如果說你使用了箭頭函數(shù),代碼會更加清晰易讀:
const as = new Set([1, 2, 3]); const bs = new Set([3, 2, 4]); const intersection = [...as].filter(a => bs.has(a)); // [2, 3]3.部分賦值
bind()允許你設(shè)定一個函數(shù)部分參數(shù)的值,你可以藉由一個已有的函數(shù),為它設(shè)定部分參數(shù)的值,然后創(chuàng)建一個新的函數(shù):
function add(x, y) { return x + y; } const plus1 = add.bind(undefined, 1);
再一次,我找到了使用箭頭函數(shù)簡化它的方法:
const plus1 = y => add(1, y);4.拓展閱讀
Currying versus partial application (with JavaScript code)
Uncurrying this in JavaScript
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78836.html
摘要:好的方案在構(gòu)造函數(shù)中仍然使用,現(xiàn)在我們只要繞過每次渲染都要生成新的函數(shù)的問題就可以了。我們可以通過只在構(gòu)造函數(shù)中綁定回調(diào)的上下問來解決這個問題,因為構(gòu)造函數(shù)只會調(diào)用一次,而不是每次渲染都調(diào)用。 原文:Binding callbacks in React components 在組件中給事件綁定處理函數(shù)是很常見的,比如說每當(dāng)用戶點擊一個button的時候使用console.log打印一些...
摘要:關(guān)鍵字會實例化一個新的對象實例,并在執(zhí)行構(gòu)造函數(shù)時將指向該實例。原文鏈接譯是什么對象的內(nèi)部工作原理 原文鏈接:What is this? The Inner Workings of JavaScript Objects (需要梯子) 原文作者:Eric Elliott 譯文永久鏈接:【譯】什么是 this?JavaScript 對象的內(nèi)部工作原理 譯者:士心 翻譯目的:函數(shù)動...
摘要:深入之繼承的多種方式和優(yōu)缺點深入系列第十五篇,講解各種繼承方式和優(yōu)缺點。對于解釋型語言例如來說,通過詞法分析語法分析語法樹,就可以開始解釋執(zhí)行了。 JavaScript深入之繼承的多種方式和優(yōu)缺點 JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優(yōu)缺點。 寫在前面 本文講解JavaScript各種繼承方式和優(yōu)缺點。 但是注意: 這篇文章更像是筆記,哎,再讓我...
摘要:遵循以下規(guī)則,按優(yōu)先級排列。換句話說,當(dāng)處于被調(diào)用函數(shù)的左邊,則就是左邊的對象。試一下通過兩種不同的方式調(diào)用函數(shù)時的值。找到應(yīng)用的規(guī)則很顯然應(yīng)用的是規(guī)則使用符號。在使用工具庫時發(fā)現(xiàn)取值不符合上述規(guī)則時,請查看庫文檔。 翻譯自文章The Simple Rules to ‘this’ in Javascript。 確定什么是 this 并非難事??偟膩碚f,通過查找函數(shù)被調(diào)用時的位置(和方法...
摘要:所以我們又可以得出一個結(jié)論原型的屬性指向構(gòu)造函數(shù),構(gòu)造函數(shù)又通過屬性指回原型,但是并不是所有函數(shù)都具有這個屬性,就沒有這個屬性。 1.原始類型 boolean number string null undefined symbol原始類型儲存的都是值,是沒有函數(shù)可以調(diào)用的,undefined.toString() 顯示報錯,但是1.toString() // 1 ; 是因為1被強制轉(zhuǎn)...
閱讀 505·2021-09-03 00:22
閱讀 1379·2021-08-03 14:03
閱讀 2097·2021-07-25 21:37
閱讀 657·2019-08-30 13:18
閱讀 1887·2019-08-29 16:19
閱讀 2693·2019-08-29 13:22
閱讀 1306·2019-08-29 12:16
閱讀 2594·2019-08-26 12:16