已编辑
注意:我已经完全编辑了这个,因为之前的问题是使用另一种方法解决的,并且我简化了这个问题,以便用我对问题的解决方案来回答自己,并与您分享我的结论。
如何通过避免使用 eval(...)
来克隆函数?
我需要获取某个给定函数的精确副本,并且这必须是与源函数不同的对象。
这就是 functionA != functionCloneOfA
,包装“functionA”并从其他函数的主体中调用它对我来说不是一个解决方案。
最佳答案
您考虑过 Lasse Reichstein Nielsen 的“克隆”功能吗?本质上,它通过返回一个在其原型(prototype)链上具有该函数的新对象来“克隆”函数。道格拉斯·克罗克福德 (Douglas Crockford) 称他的版本为 "beget" .
var cloneFn = (function() {
var F = function(){};
return function(fn) {
F.prototype = fn;
return new F();
}
}());
var myClone = cloneFn(someFn);
返回一个对象,其 [[prototype]] 是“克隆的”someFn
函数。
关于javascript - 克隆 JavaScript 函数 : anything else better than using eval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135586/