1

コンストラクターとプロトタイプ定義を持つオブジェクト Foo があります。

var Foo = function Foo(bar) {
  this._bar = bar;
}
Foo.prototype = {
  _bar: null

  getBar: function() {
    return _bar;
  }
}

私のアプリケーションには Foo オブジェクトの配列があり、amplify.store を使用してそれらをローカル ストレージに保存しています。

// save
amplify.store("FOO_ARRAY", fooArray);
// load
fooArray = amplify.store("FOO_ARRAY") || [];

を使用して新しい Foo オブジェクトを作成するとvar foo = new Foo("bar")、foo には期待どおりに呼び出されるメソッドがありgetBar()ます。

しかし、amplify.store を使用して保存された Foo を取得すると、getBar()メソッドが存在せず、オブジェクトにプロトタイプがありません。

私の質問は次のとおりです。オブジェクトのプロトタイプをmplify.storeに保持させる方法はありますか、またはfooArrayがロードされた後にそのプロトタイプを再割り当てする良い方法はありますか?

4

1 に答える 1

1

mplifyjs から: http://amplifyjs.com/api/store/

value: 格納する値。値は、JSON としてシリアル化できるものであれば何でもかまいません。

Json はシリアル化関数をサポートしていません。

コンストラクターを変更して、シリアル化されていないデータを取得し、そのプロトタイプを含むインスタンスを返すことができます。

于 2014-08-14T02:31:39.837 に答える