
JavaScript でプレーン オブジェクトをクラス インスタンスにキャストする
JavaScript では、サーバーからプレーン オブジェクトを JSON 応答として受信するときに、それらを型付きクラスのインスタンスにキャストする必要があります。これにより、クラス固有のメソッドとプロパティにアクセスできるようになります。
解決策:
1 つの方法は、インスタンスに似た任意のオブジェクトを受け入れ、そのクローンを作成するコンストラクターを作成することです。あるいは、オブジェクトをインスタンスに変換する静的メソッドを実装することもできます:
1 2 3 4 | <code class = "javascript" >Person.fromJSON = function (obj) {
return ...;
};</code>
|
ログイン後にコピー
パブリック プロパティを持つプレーン オブジェクトがある特定のシナリオでは、次のメソッドを使用できます:
1 2 3 4 | <code class = "javascript" > var personInstance = new Person();
for ( var prop in personLiteral) {
personInstance[prop] = personLiteral[prop];
}</code>
|
ログイン後にコピー
これにより、プレーン オブジェクトのすべてのプロパティが新しく作成されたインスタンスに割り当てられます。同様に、Animal インスタンスを作成できます。
注:
- JSON はクラス情報を提供しないため、オブジェクト構造を事前に知っておく必要があります。
- run メソッドを各インスタンスに保持するのではなく、Animal.prototype オブジェクトに移動することをお勧めします。
サンプル コード:
1 2 3 4 5 6 7 | <code class = "javascript" > var persons = JSON.parse(serverResponse);
for ( var i = 0; i < persons.length; i++) {
persons[i] = Object.assign( new Person(), persons[i]);
for ( var j = 0; j < persons[i].animals; j++) {
persons[i].animals[j] = Object.assign( new Animal(), persons[i].animals[j]);
}
}</code>
|
ログイン後にコピー
このコードにより、person[0].Animals[2].Run(); などのクラス固有のメソッドを使用できるようになります。
以上がJavaScript でプレーン JSON オブジェクトをクラス インスタンスに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。