2010-12-10 10 views
6

さまざまなゲッターとセッター機能を提供するために新しいプロトタイプを割り当てるJSONからいくつかのオブジェクトを直列化しました。 (this questionに述べたように)これを行うための明白な方法は__proto__プロパティは、非標準および非推奨で、MDC helpfully points outとして、しかし__proto__プロパティへの適切な割り当て方法

myJsonObj.__proto__ = { function1: /* ... */, function2: /* ... */ }; 

を設定することです。新しいラッパーオブジェクトをたくさん作成せずに、同じ効果を達成するための標準に準拠した方法(「標準」の定義について)はありますか?

+0

あなたはhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf(つまりあなたの "使用Object.getPrototypeOf()の代わりに"([getPrototypeOf()]を示しているにリンクされているドキュメント))。だからこのようなもの: 'var proto = myJsonObj.getPrototypeOf(); proto.function1 =/*何でも* /;もし私が間違っていなければ、 'Object.getPrototypeOf(myJsonObj)'を呼び出すと 'Object.prototype'が返されます(' myJsonObj'は他のコンストラクタを持っていないので、proto.function2 =/* whatever * /; ' – Lee

+0

) )。つまり、あなたの提案に従うことで、クラスを 'myJsonObj'に注入するのではなく、' Object'(非常に悪い)を変更することになります。 – kpozin

答えて

4

オブジェクトの作成後にプロトタイプを変更する標準に準拠した方法はありません。 JSONから解析する際に必要なプロトタイプをオブジェクトに作成するための標準に準拠した方法があります。 http://www.json.org/js.htmlから

オプションリバイバーパラメータは 最終結果のすべてのレベルですべての キーと値のために呼び出される 関数です。各値は で、復習者 機能の結果に置き換えられます。これは、 汎用オブジェクトを 疑似クラスのインスタンスに改造したり、日付 文字列をDateオブジェクトに変換するために使用できます。

関連する問題