【问题标题】:amplify.store doesn't preserve my object's prototype functionsamplify.store 不保留我的对象的原型函数
【发布时间】:2014-08-13 15:41:22
【问题描述】:

我有一个对象,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") || [];

当我使用 var foo = new Foo("bar") 创建一个新的 Foo 对象时,foo 有一个名为 getBar() 的方法,正如预期的那样。

但是,当我检索已使用 amplify.store 保存的 Foo 时,getBar() 方法不存在,并且该对象没有原型。

这是我的问题:有没有办法让 amplify.store 保留对象的原型,或者有没有一种在加载 fooArray 后重新分配该原型的好方法?

【问题讨论】:

    标签: javascript amplifyjs


    【解决方案1】:

    来自 amplifyjs:http://amplifyjs.com/api/store/

    value:要存储的值。该值可以是任何可以序列化为 JSON 的值。

    Json 不支持序列化函数。

    您可以修改您的构造函数以获取反序列化的数据并返回一个带有原型的实例。

    【讨论】:

    • 这正是我所做的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-01-02
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2016-03-03
    • 2023-03-18
    相关资源
    最近更新 更多