私は最近、これが可能かどうか疑問に思っていました.オブジェクトを関数に渡し、その関数内の完全に異なるオブジェクトでオブジェクト全体をオーバーライドして、その値が永久に変更されるようにします. オブジェクトは参照渡しなので、どうにかして動かないといけない気がするのですが、どうすればいいのかわかりません。コードに入れるには、次のようにする必要があります。
function a() {
console.log("i am a");
}
function b() {
console.log("i am b");
}
function override(func1, func2) {
func1 = func2;
}
override(a, b);
a(); //"i am b" expected
変数をオーバーライドしているだけなので、これは明らかに機能しませんfunc1
が、アイデアは理解できると思います。また、純粋なオブジェクトの代わりに関数を使用することにしました。オブジェクトのプロパティを削除し、2 番目のオブジェクトから新しいプロパティをコピーするだけで、オブジェクトを簡単に "オーバーライド" できるからです。しかし、それは私が望むものではありません。
質問する前に、私はこれで現実の問題を解決しようとしているわけではありません。ただ好奇心から質問しているだけです。これを達成する方法はありますか? そうでない場合、そうでない理由はありますか?
ありがとう!