我想克隆一个函数,但我需要删除原文。克隆一个函数然后删除它
let obj={};
obj.funct=function funct() { console.log('test');}
let clone={};
clone.funct=obj.funct.bind({});
delete obj.funct
但是该功能在两个对象中都被删除。
有什么想法?也许是ref或val的问题?
在此先感谢您的帮助。
我想克隆一个函数,但我需要删除原文。克隆一个函数然后删除它
let obj={};
obj.funct=function funct() { console.log('test');}
let clone={};
clone.funct=obj.funct.bind({});
delete obj.funct
但是该功能在两个对象中都被删除。
有什么想法?也许是ref或val的问题?
在此先感谢您的帮助。
我使用的是循环内,并且被克隆相同的参考对象,因此删除相同的var。
对不起,我的错误,并感谢您告诉我,代码正确运行。
ie:你可以添加你想要的所有-1。对不起
当您将值传递给clone.funct
时,您确实只是传递原始函数的引用。杀死原来的功能,参考文献就不了了之。断绝奇偶将字符串化的初始功能
的一种方式,然后用一个函数构造函数来创建克隆:
const obj={};
obj.funct=function funct(a,b) { console.log(a,b);}
const clone={};
const functString = obj.funct.toString();
clone.funct= new Function('return (' + functString + ')(...arguments)');
delete obj.funct
console.log('Original:',obj.funct)
console.log('Cloned:',clone.funct)
clone.funct('hello', 'there')
无法重现 - > https://jsfiddle.net/adeneo/pfpdxs4x/ – adeneo
我在这里没有看到问题'obj.funct()'将有一个错误(*因为它被删除* )和'clone.funct()'很有效。 –