【问题标题】:Stringify array with Objects [duplicate]用对象字符串化数组[重复]
【发布时间】:2015-08-11 02:17:21
【问题描述】:

我的问题是,在使用JSON.stringifyJSON.parse 之后,我无法访问对象的方法。

我有类似以下的内容:

main.js

    var items = [];

    define(['item'], function (item) {

    var main = function () {

    $(document).ready(function) {

    $("#anyButton").on("click", function() {
    items.push(new item());
    items[0].myMethod();    //items[0].myMethod() works fine here.
          });
        });
      }();
    });

item.js

    var item = function () {
        var construnctor,
            that = {};

        constructor = function () {
            return that;
        };

        that.myMethod= function () {
        };

      return constructor.apply(null, arguments);
    };
    return itemModule;

现在我想对 main.js 中的 items Array 进行字符串化并将其存储到 localStorage:

main.js

window.localStorage.setItem("myKey", JSON.stringify(items));

然后解析回来:

var parsedArray = [];
parsedArray = JSON.parse(window.localStorage.getItem("myKey"));

现在的问题是,我无法访问 item.js 中的 myMethod 以下失败:

parsedArray[0].myMethod();

产生:

parsedArray[0].myMethod 不是函数。

问题出在哪里?感谢您的帮助。

【问题讨论】:

  • 你不能将函数序列化为 JSON - 没有这样的东西。

标签: javascript json cordova requirejs local-storage


【解决方案1】:

JSON.stringify 只会转换值类型属性、数组和对象。

函数将被省略。

【讨论】:

  • 好吧,我不知道函数不能被字符串化。如果没有 stringify,我就没有合适的方法来做到这一点。你怎么看eslinstructor.net/jsonfn
猜你喜欢
  • 2018-08-31
  • 2019-08-27
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
相关资源
最近更新 更多