
1 amber0317 2021 年 12 月 8 日 via Android f.bind(null) |
2 noe132 2021 年 12 月 8 日 via Android 复制不了的。我给你个引用了闭包的函数,你能复制一样的东西吗? |
3 DrakeXiang 2021 年 12 月 8 日 函数也是对象啊,不过他的提示可能就是 bind/call/apply 这种吧 |
4 Mutoo 2021 年 12 月 8 日 思路:function.toString() 可以拿到函数的字面量,然后用正则解析出参数和函数 body ,调用 new Function() 就可以复制函数了。当然这种方式只能复制一些纯函数,对闭包或者其它有 Side Effect 的函数不灵。 fn_a = function(x,y){return x+y;}; fn_a.toString() > "function(x,y){return x+y;}" fn_b = (x, y) => x+y; fn_b.toString() > (x, y)=>x+y; |
5 robinlovemaggie 2021 年 12 月 8 日 => 算不算? |
6 maichael 2021 年 12 月 8 日 同楼上,bind 、apply 。 |
7 vision1900 2021 年 12 月 8 日 |
8 vision1900 2021 年 12 月 8 日 @vision1900 但我感觉如果用 bind 不设置 this 的话,好像没有任何实际意义 |
9 waiaan 2021 年 12 月 8 日 不是直接赋值给一个变量就行了?复制函数是什么意思? |
10 bzw875 2021 年 12 月 8 日 via iPhone 面试官问的不好 |
11 misdake 2021 年 12 月 8 日 b = a.bind(null) 和 b = a 相比,除了判断相等的结果不一样之外还有别的区别吗 |
12 vanton 2021 年 12 月 8 日 嗯? 为啥那么复杂,很简单的处理下就好了。 ``` /** 原始函数 */ function f1() { var n = 999; nAdd = function () { n += 1; }; function f2() { alert(n); } return f2; } /** 复制?? */ function a(x) { return x; } /** 复制原始函数到 f3 */ var f3 = a(f1); console.log(f3); f3(); ``` |
13 secondwtq 2021 年 12 月 8 日 函数不需要复制啊,一个东西需要区分“复制”和“引用”,是因为这东西可以修改,或者需要管理内存。函数没法修改,内存管理 JS 帮你干了,就不需要复制了。 |
14 jtwor 2021 年 12 月 8 日 感觉是想问深拷贝与浅拷贝,js 所有都是对象,能复制的。。 |
15 Kasumi20 2021 年 12 月 8 日 函数的本质就是提高可复用性,降低代码复杂度,你复制函数有什么意义? |
16 Geo200 2021 年 12 月 8 日 为什么面试要问那么奇怪的问题?真实的业务场景里真的会用到吗 |
17 Kasumi20 2021 年 12 月 8 日 我能想到的唯一的用途是对类的成员函数进行 Hook |
18 GuuJiang 2021 年 12 月 8 日 ctrl+c/ctrl+v (狗头 能问出这种问题,要么是你曲解了面试官的意思,要么面试官是个煞笔 |
19 rebel28 2021 年 12 月 8 日 问的太笼统太不严谨了, 你能想到 n 种环境下 n 种解法。 但是面试官只会假定一种环境 ,不给你设定前提,那就是面试官的问题了。 就像问你 css 盒子水平居中有几种方法,但是不给你说是否有父级,父级宽高是不是固定等等假定的条件,你总不可能每种都给他写出来吧 |
20 jones2000 2021 年 12 月 8 日 直接编译这个函数, 生成这个函数的 AST (抽象语法树),这个就可以了。 如果要执行这个函数, 直接执行这个 AST 就可以了。 |
21 IT1024 2021 年 12 月 8 日 楼上的方法刚试了两都可以,但面试官 “提示说你能想到的返回函数的 API 有啥” 这我也懵,有哪位前端大妞解释下不? |
22 tousfun 2021 年 12 月 8 日 via iPhone 所以 H5 到底指什么 不懂 |
23 llb123 2021 年 12 月 8 日 eval? |
24 serge001 2021 年 12 月 8 日 这是什么神仙公司问出来的问题 |
25 C02TobNClov1Dz56 2021 年 12 月 8 日 @919615766 小程序? 混合模式 app? 新型框架的网页? 快应用? 网页游戏? 这些都算 H5 |
26 Austaras 2021 年 12 月 8 日 楼上都在说啥呢 Object.assign 就行了 |
28 Jooooooooo 2021 年 12 月 8 日 啥叫复制函数...场景是啥? |
29 yaphets666 2021 年 12 月 8 日 喜欢拿 h5 指代 web 或者移动端 web 的都是老一辈前端 /非专业前端了,找工作嘛,别太锋芒毕露,心里吐槽下就行了。容忍菜鸟同事和领导也是工作的一部分,大家都不容易。 |