ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript でジェネリック オブジェクトを型指定されたインスタンスにキャストする方法

JavaScript でジェネリック オブジェクトを型指定されたインスタンスにキャストする方法

DDD
リリース: 2024-10-18 12:05:28
オリジナル
983 人が閲覧しました

How to Cast Generic Objects to Typed Instances in JavaScript?

JavaScript での型付きインスタンスへの汎用オブジェクトのキャスト

問題ステートメント:

からの JSON 応答サーバーには、クラス インスタンスを表すプレーン オブジェクトが含まれることがよくあります。これらの汎用オブジェクトを型付きインスタンスにキャストすると、そのクラス メソッドを利用して型付きデータにアクセスできるようになります。

解決策:

オブジェクト インスタンスを作成するには、コンストラクターを呼び出す必要があります。ただし、JSON データにはコンストラクター情報が欠如しているため、別のアプローチが必要です。

1.反復クローン作成:

このアプローチには、プレーン オブジェクトのプロパティを新しく作成されたインスタンスにクローン作成することが含まれます:

<code class="javascript">var personLiteral = ...; // JSON.parse("...");
var personInstance = new Person();
for (var prop in personLiteral)
    personInstance[prop] = personLiteral[prop];</code>
ログイン後にコピー

2。 Object.assign の使用:

Object.assign を使用すると、同じタスクをより簡潔に実行できます:

<code class="javascript">var personInstance = Object.assign(new Person(), personLiteral);</code>
ログイン後にコピー

ネストされた構造を持つより複雑なオブジェクトの場合は、プロパティと同じクローン作成プロセスを再帰的に適用します。

3.カスタム コンストラクターのクローン作成:

すべてのコンストラクターは、プレーン オブジェクトを受け入れてクローンを作成し、必要なロジックを処理するように拡張できます:

<code class="javascript">Person.fromJSON = function(obj) {
    // custom code, as appropriate for Person instances
    // might invoke `new Person`
    return …;
};</code>
ログイン後にコピー

例:

特定のシナリオでは、クローン作成プロセスを人物オブジェクトと動物オブジェクトの両方に適用します。

<code class="javascript">var persons = JSON.parse(serverResponse);
for (var i=0; i<persons.length; i++) {
    persons[i] = $.extend(new Person, persons[i]);
    for (var j=0; j<persons[i].animals; j++) {
        persons[i].animals[j] = $.extend(new Animal, persons[i].animals[j]);
    }
}</code>
ログイン後にコピー

実行メソッドは個々のインスタンスではなく、Animal プロトタイプに追加する必要があることに注意してください。

以上がJavaScript でジェネリック オブジェクトを型指定されたインスタンスにキャストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート