亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - js 有優雅的辦法從外部 hijack 函數入參嗎?

瀏覽:120日期: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 每次調用的時候第二個參數總是加 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:

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

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

想要 fn 每次調用的時候第二個參數總是加 2

呃呃呃。。

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

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

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

更廣義的說:

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

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 有優雅的辦法從外部 hijack 函數入參嗎?

javascript - js 有優雅的辦法從外部 hijack 函數入參嗎?

用 fn020 做變量名 應該更優雅把 = =

回答3:

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 欧美日韩国产一区二区三区不卡 | 三级毛片免费 | 丰满的日本护士xxx 丰满美女福利视频在线播放 | 久久久久免费精品国产小说 | 久久99国产精品久久99果冻传媒 | 中文字幕三区 | 久久精品国产亚洲麻豆 | 日韩精品福利视频一区二区三区 | 美女扣下面流白浆丝袜 | 大尺度人体自拍私拍337p | 中国一级毛片在线观看 | 91在线精品亚洲一区二区 | 国产91在线|亚洲 | 成人免费xxx色视频 成人免费短视频 | 国产一区二区三区精品视频 | 国产在线不卡一区 | 欧美一区二区久久精品 | 午夜激情在线视频 | 欧美在线成人免费国产 | 91日本在线 | 国产高清厕所盗摄视频 | 亚洲永久精品免费www52zcm男男 | 国产精品品福利视频 | 麻豆国产精品一二三在线观看 | 国产90后美女露脸在线观看 | 日本强不卡在线观看 | 国产日韩一区二区 | 香蕉视频在线观看免费国产婷婷 | 久青草国产手机在线观 | 狠狠色综合久久丁香婷婷 | 国产一级在线视频 | 视频办公室添的我好爽 | 亚洲一区二区三区四区在线观看 | 国产高清成人吃奶成免费视频 | 深夜国产一区二区三区在线看 | 激情综合网址 | 七色永久性tv网站免费看 | 一区二区三区在线播放 | 成人亚洲天堂 | 国内自拍视频一区二区三区 | 国产欧美日韩精品第三区 |