javascriptオブジェクトをクローンする方法はありますか? DOM要素ではなく、特定のコンストラクタを持つオブジェクトです。たとえば、私は電話番号オブジェクトを持っていると言うことができます:複製/複製Javascriptオブジェクト
function PhoneNumber(number, type) {
this.number = number;
this.type = type;
}
var phoneObj1 = new PhoneNumber('1111111111', 'Home');
var phoneObj2 = //Copy of phoneObj1, but unique so I can set other parameters if necessary.
jQueryはこの問題を拡張で解決します。代わりに電話番号のコンストラクタ名での
Object{number:'1111111111' type:'Home'}
:
は、しかし、それは一般的なオブジェクトを返します。私は元のphoneObj1のコンストラクタを渡す方法が必要です。実際には新しいPhoneNumber()をextendに書く必要はありません。これは、これが使用されているコードが多くの異なるタイプのオブジェクトによって使用されているからです。参照するオブジェクトがあるという事実を除いて使用されるコンストラクタです。
あなたはそれ以来、そのオブジェクトの種類のコンストラクタを返すか、単に自分自身のコピーを作成するいずれかのオブジェクトのあなたの異なったタイプ(右コンストラクタを呼び出し、それぞれに(おそらくcopy()
と呼ばれる)メソッドを持つことができ
var phoneObj2 = $.extend(new PhoneNumber(), phoneObj1); //I CANNOT do this!
//Maybe something like this?
var phoneObj2 = $.extend(new phoneObj1.constructor.name, phoneObj1); //This throws an error.
が重複する可能性を(のhttp://のstackoverflow。com/questions/122102/what-is-the-the-most-efficient-way-to-clone-a-javascript-object) – fyr
ここでいくつかの良い答えhttp://stackoverflow.com/questions/332422/how-do-i -get-the-object-type-in-javascript – georg
は 'fyr'と合意しました。私はこれを最も直接的な方法として打つだろう:Object.create(obj); – dbrin