我想克隆一个函数,但我需要删除原始函数。
let obj={};
obj.funct=function funct() { console.log('test');}
let clone={};
clone.funct=obj.funct.bind({});
delete obj.funct
但是在两个对象中删除了该功能。
有什么想法吗?可能是ref或val问题?
提前感谢您的帮助。
答案 0 :(得分:0)
我在循环中使用并克隆了相同的引用对象,因此删除相同的var。
对不起我的错误,谢谢你告诉我代码运行正确。
即:您可以添加所需的全部-1。再次抱歉
答案 1 :(得分:-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')