久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - js 有優(yōu)雅的辦法從外部 hijack 函數(shù)入?yún)幔?/h1>
瀏覽:140日期:2023-09-21 18:52:02

問題描述

let fn = (a, b, c) => { console.log(a, b, c)}fn1(0, 0, 0) // output: 0 0 0

想要 fn 每次調(diào)用的時候第二個參數(shù)總是加 2

fn(0, 0, 0) // output: 0 2 0fn(1, 1, 1) // output: 1 3 1

目前只找到一種很丑的寫法去 hijack:

fn = (_ => { const innerFn = fn const newFn = (a, b, c) => { innerFn(a, b + 2, c) } Object.assign(newFn, innerFn) return newFn})()

有沒有更好一點的包裝方法?

問題解答

回答1:

方法是沒錯,不過我總覺得你寫的有點別扭……我覺得直接一點比較好……

// 原函數(shù)function fn(a, b, c) { console.log(a, b, c)}// 加工函數(shù)const addTwo = (fn) => (a, b, c) =>fn(a, b + 2, c);// 生成新函數(shù)const newFn = addTwo(fn);newFn(0, 0, 0); //0 2 0回答2:

想要 fn 每次調(diào)用的時候第二個參數(shù)總是加 2

呃呃呃。。

其實無非就是分別給參數(shù)加上 0, 2, 0

也就是說從函數(shù) fn 生成另外一個 偏函數(shù) fnOffset

把 [0, 2, 0] 這三個參數(shù) 分別加到 fn(a, b, c) 上的 a b c 上

更廣義的說:

把 [ .... ] 這 n 個參數(shù) 分別加到 fn() 的 arguments 的對應(yīng)位置上

function fn(a, b, c){ console.log(a, b, c); }function adder(arr, fn, _this){ _this = _this || window; var toAdd = arr.slice(0, fn.length); return function(){var argu = Array.prototype.slice.call(arguments); fn.apply(_this, toAdd.map((item, idx) => { return argu[idx] + item; })); }}var fnOffset = adder([0, 2, 0], fn); fnOffset(0, 0, 0); fnOffset(2, 1, 0);

javascript - js 有優(yōu)雅的辦法從外部 hijack 函數(shù)入?yún)幔? src=

javascript - js 有優(yōu)雅的辦法從外部 hijack 函數(shù)入?yún)幔? src=

用 fn020 做變量名 應(yīng)該更優(yōu)雅把 = =

回答3:

你描述的東西有點像ES6的Proxy,但是這個是無法polyfill的,可能不太適合在前端用。

標(biāo)簽: JavaScript
相關(guān)文章:

主站蜘蛛池模板: 牡丹江市| 刚察县| 诏安县| 济南市| 渝北区| 新河县| 武安市| 晋城| 峨山| 昭平县| 五指山市| 全州县| 开封市| 额尔古纳市| 榆中县| 荔浦县| 赤城县| 都江堰市| 海阳市| 壶关县| 宜昌市| 馆陶县| 文成县| 江孜县| 灵石县| 鄂州市| 团风县| 玉屏| 安达市| 望城县| 成都市| 丰顺县| 泾阳县| 定襄县| 祁阳县| 汉中市| 富平县| 连平县| 乐山市| 合肥市| 阿拉善盟|