関数をクローンしたいが、元のものを削除する必要がある。関数をクローンしてから削除する
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を削除します。
ご迷惑をおかけして申し訳ありませんが、コードが正しく動作することを私に見せていただきありがとうございます。
:つまり、-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()'は機能します。 –