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