V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zhw2590582  ›  全部回复第 71 页 / 共 92 页
回复总数  1835
1 ... 67  68  69  70  71  72  73  74  75  76 ... 92  
@yhxx 我 google 了一圈,有点答案是通过获取函数的字符串,然后通过 eval 或者 new Function 来重新构造一个函数,有的通过 bind 或者 apply,但这些只对纯函数有效,假如函数访问了一个外部变量就拷贝不了。我从 lodash 的源码也看出来,作者也直接忽略函数拷贝:

https://github.com/lodash/lodash/blob/588bf3e20db0ae039a822a14a8fa238c5b298e65/.internal/baseClone.js#L194

结论就是对非纯函数做拷贝是没意义的。
@shintendo 所以这个面试题就有问题啦,连 lodash 都没对函数做深拷贝,假如不是纯函数的话,那更无法拷贝。
@yhxx

https://github.com/lodash/lodash/issues/4610

lodash 克隆一个函数,会返回空的对象,而且它推荐只克隆函数的返回值,但这和面试题不符啊。
@ZehaiZhang 上一条
@ ZehaiZhang

我是问怎么深拷贝一个`函数`,例如下面,你怎么拷贝一个新的函数 a.b 出来,变成一个全新的`c`函数。
var a = {b: function c(){ return 1; }};

这样? var c = a.b.bind(null);

假如 a.b 还能传参数呢?这样?

function cloneFn(fn) {
return function () { return fn.apply(this, arguments); };
};

var c = cloneFn(a.b);

或者直接通过 toString 来构造,如:

var c = eval('function c(){ return 1; }')
var c = new Function('return 1')
题外话,怎么深拷贝一个函数?还有`function executeQueue`这题我没看懂要什么效果。
2020-02-28 12:27:52 +08:00
回复了 YadongZhang 创建的主题 上海 进退维谷
说句难听的,你在学校都学了什么?家里不富裕的话,那不是更要学习吗?一句“我是个慵懒的人”就想洗脱自己?意气用事,图样图森破。
2020-02-28 12:18:21 +08:00
回复了 EarthChild 创建的主题 生活 我去银行兑换 1000 个五毛这个行为有什么问题?
假如你朋友也愿意接收的话...
2020-02-26 12:34:02 +08:00
回复了 zitengdu 创建的主题 职场话题 收留回沪人员致重新启动 14 天隔离期,遭公司行政处分。
@jiwei3187553 砸东西大人都是发生在农村里,且很少很少的比例。除此之外,国家政策和指挥我觉得都没问题,日本韩国可以参考我们的经验也没毛病啊。
2020-02-25 15:36:05 +08:00
回复了 SunriseFox 创建的主题 求职 [求职] 还有培养价值的初级前端,讨一份前端方向的工作喵
简历千万别用卖萌的语气写啊,HR 小姐姐会过滤掉,除非是开发汉子看到简历才感兴趣
有,但后面也没再维护了
2020-02-22 20:16:52 +08:00
回复了 px920906 创建的主题 JavaScript js 如何深拷贝一个函数?
要么考查 bind 构造一个新函数,要么考查从现有函数体提取字符串再构造一个新函数
2020-02-21 22:29:09 +08:00
回复了 PHPLAC 创建的主题 程序员 老哥萌,老板至今不发工资,还要不要干下去?
以后大概率也不会发,可以投简历先
2020-02-20 23:42:10 +08:00
回复了 Cy86 创建的主题 Vue.js 如何自学 Vue 呢
前期什么都不要配置,像 webpack,bable 什么的不要管,像 jq 直接引入先熟练一下
2020-02-20 17:40:18 +08:00
回复了 Messiv2 创建的主题 汽车 拿驾照后很久才买车的 V2er,你们是怎么重新掌握开车技巧的
还有陪练这服务?一天要什么价位啊
1 ... 67  68  69  70  71  72  73  74  75  76 ... 92  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2492 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 00:27 · PVG 08:27 · LAX 16:27 · JFK 19:27
Developed with CodeLauncher
♥ Do have faith in what you're doing.