我想克隆一個函數,但我需要刪除原文。克隆一個函數然後刪除它
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()'很有效。 –