プレーンな JavaScript オブジェクトをクラスのインスタンスにキャストするにはどうすればよいですか?
JavaScript でプレーン オブジェクトをクラス インスタンスにキャストする
JavaScript でプレーン オブジェクトから実際のインスタンスを作成することは可能ですが、特定の課題が伴います。実際のシナリオとその解決策を見てみましょう。
問題
2 つのクラス、人物と動物について考えてみましょう。サーバーは汎用の Person オブジェクトの配列を返します:
[ { personName: "John", animals: [{ animalName: "cheetah" }, { animalName: "giraffe" }] }, { personName: "Smith", animals: [{ animalName: "cat" }, { animalName: "dog" }] } ]
目的は、このオブジェクト配列を Person インスタンスの型付き配列にキャストして、person[0].Animals[2].Run などの呼び出しを可能にすることです。 ().
解決策
プレーン オブジェクトからインスタンスを作成するには、コンストラクターを呼び出してプロパティを正しく割り当てる必要があります。
一般的なアプローチは、コンストラクターにインスタンスに似たオブジェクトを受け入れさせ、クローンを作成することです。彼ら。内部インスタンス作成ロジックはコンストラクターによって処理されます。
カスタム メソッド
別の解決策は、オブジェクトを取得してインスタンスを生成する静的メソッドを Person クラスに作成することです。
Person.fromJSON = function(obj) { // Custom code to create instances based on `obj` return ...; };
基本的なケースに対する簡単なアプローチ
今回のような、コンストラクターがなくパブリック プロパティのみがある単純なケースでは、次のようにすることができます。
var personInstance = new Person(); for (var prop in personLiteral) personInstance[prop] = personLiteral[prop];
または、Object を使用することもできます。 assign:
var personInstance = Object.assign(new Person(), personLiteral);
同様のアプローチに従って、Animal インスタンスを作成します。
その他の実装
JSON はクラス情報を伝えないため、オブジェクト構造を事前に設定しておきます。あなたの場合、実装は次のようになります。
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]); } }
追加メモ
Animal クラスは、各インスタンスではなくプロトタイプで run メソッドを定義する可能性があります。
以上がプレーンな JavaScript オブジェクトをクラスのインスタンスにキャストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
