0

我在 JS 数组原型中添加了一个字段“max”。当我对数组进行字符串化时,我无法看到这个添加。我试图覆盖 toJSON 函数但无济于事。

Array.prototype.max = 0;
Array.prototype.toJSON = function(){
    var o = this;
    o.max = this.max;
    return o;
};

var a = [1,2,3];
a.max = 10;

console.log(JSON.stringify(a));
//'[1,2,3]'

我想避免做类似 {array_field:a,max_field:max} 的事情而只使用数组对象 - 这可能吗?我究竟做错了什么?

4

1 回答 1

1

您在这里有几个选择,它们都不会完全满足您的要求。

由于 JSON 数组严格限制为整数键 [1],因此您不能max直接发送 的值。

您的选择包括:

  • 使用 aobject而不是array. 你失去了所有的阵列魔法,但它可能对你更有效。
  • 将元数据发送到数组之外,例如包含max数组值和数组值的配置对象
  • max在发送之前强制数组长。JSON 将使用null.
  • 使用自定义序列化器/反序列化器。您甚至可以在JSONS+ 附加内容中编写代码。实际上,这与第二种选择几乎相同。

[1] 与 JavaScript 对象不同

于 2014-04-05T20:39:10.863 回答