私がやろうとしているのは、Javascriptオブジェクトのclone()関数を作成することです。ご存知のように、Javascriptにこのためのネイティブ機能がないことは、苦痛になる可能性があります。私にはそれを行うための素晴らしい方法がありますが、使いやすさに関しては、それは厄介です。これまでの関数は次のとおりです。
function clone(objectToClone) {
var myClone = function() {};
myClone.prototype = objectToClone;
return [
new myClone(),
new myClone()
];
}
ご覧のとおり、現在、両方のクローンを含む配列を返しています。これにより、使用法は次のようになります。
// usage
var bar = new foo();
bar = clone(bar); // forks bar into two separate copies of bar (awkward)
// bar[0] is now clone 1
// bar[1] is now clone 2
私がやりたいことは、次のようなことをすることができることです:
function clone(objectToClone) {
var myClone = function() {};
myClone.prototype = objectToClone;
objectToClone = new myClone(); // somehow magically?
return new myClone();
}
// usage
var bar = new foo();
var baz = clone(bar); // returns a copy, and bar is now one of the copies as well.
// bar is now clone 1
// baz is now clone 2
残念ながら、引数の割り当ては呼び出し元のスコープに影響を与えないため、これは機能しません。しかし、誰かがjsのトリックを考えて、目的のマナーで関数を使用できるようになることを期待していました。どんなアイデアでも大歓迎です。