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

JavaScript でオブジェクトをクラス インスタンスにキャストする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-18 11:43:03371ブラウズ

How to Cast Objects to Class Instances in JavaScript

JavaScript でのクラス インスタンスへのオブジェクトのキャスト

開発者が、通常はサーバーから受信するプレーン JavaScript オブジェクトをキャストする必要がある場合に多くのケースが発生します。応答を特定のクラス インスタンスに変換し、さらに処理します。この要件は、サーバーから受信したオブジェクトに、それらが表すクラスに関連付けられた必要なメソッドとプロパティが不足している場合に発生します。

前提条件

オブジェクトをクラス インスタンスにキャストするには、次のようにします。まず次のことを理解する必要があります:

  • JavaScript では、オブジェクト インスタンスを作成するには、そのコンストラクターを呼び出す必要があります。
  • コンストラクターは、単純なプロパティを超えて拡張される可能性がある特定の引数を受け取ります。
  • コンストラクターを呼び出した後、解析された JSON オブジェクトから作成されたインスタンスにパブリック プロパティを割り当てる必要があります。

解決策

堅牢な解決策は、すべてのコンストラクターは、インスタンスに似たオブジェクト (実際のインスタンスを含む) を受け入れ、それらを適切に複製できること。これにより、インスタンス作成ロジックが正しく処理されることが保証されます。

別のより効率的なアプローチは、クラス内に静的メソッドを作成してオブジェクトをインスタンスに変換することです。

Person.fromJSON = function(obj) {
    // Custom code for creating instances of Person
    return …;
};

具体的な例

次の簡略化された例を考えてみましょう:

function Person() {
    this.personName = "";
    this.animals = [];
}

function Animal(){
    this.animalName = "";
    this.run = function(meters){
        .....
    }
}

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]);
    }
}

注: 提供された run メソッドは、個々のインスタンスではなく、Animal.prototype オブジェクトに追加する必要があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。