JavaScript でのクラス インスタンスへのオブジェクトのキャスト
開発者が、通常はサーバーから受信するプレーン JavaScript オブジェクトをキャストする必要がある場合に多くのケースが発生します。応答を特定のクラス インスタンスに変換し、さらに処理します。この要件は、サーバーから受信したオブジェクトに、それらが表すクラスに関連付けられた必要なメソッドとプロパティが不足している場合に発生します。
前提条件
オブジェクトをクラス インスタンスにキャストするには、次のようにします。まず次のことを理解する必要があります:
解決策
堅牢な解決策は、すべてのコンストラクターは、インスタンスに似たオブジェクト (実際のインスタンスを含む) を受け入れ、それらを適切に複製できること。これにより、インスタンス作成ロジックが正しく処理されることが保証されます。
別のより効率的なアプローチは、クラス内に静的メソッドを作成してオブジェクトをインスタンスに変換することです。
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 サイトの他の関連記事を参照してください。