0

在 xpages(注释 8.5.3)中,我使用内置的服务器端 javascript 函数toJson将 javascript 对象保存为 json。但是,当我使用fromJson从字符串中获取对象时,我不能再将我的个人原型函数用于结果对象中包含的数组。

举个例子:

var obj0={x:[1,2,3,"x","y","z"]};
var s=toJson(obj0);
var obj1=fromJson(s);

var x0=obj0.x.copy(); // WORKS FINE
var x1=obj1.x.copy(); // ERROR RAISED

引发的错误是:

[TypeError] 在“Array [JavaScript Object]”类型的对象上调用方法“copy()”时出错

函数 copy() 是 Array 的一个简单原型函数,并且工作正常:

if(!Array.prototype.copy) {
    Array.prototype.copy=function() { return this.slice(0); }
}

上面的数组 x1 是 instanceof Array 并支持所有内置的 Array 函数,如 slice、join 等。然而,使用原型函数不起作用。

有人知道我在这里做错了什么吗?

4

2 回答 2

1

问题是否与 Tommy 描述的问题有关 http://dontpanic82.blogspot.se/2010/10/xpages-bug-in-fromjson-with-fix.html Paul Hannan 写了一条评论说他记录了一个错误报告它,但我不知道它是否在 8.5.3 中修复

于 2013-01-03T07:46:58.107 回答
0

使用fromJson创建对象的问题是,创建的对象中只有对象数据,而没有添加其方法。因此,必须手动添加所有方法,或者克隆新对象。以下链接提供了克隆 javascript 对象所需的解释和代码:

1. 用 Ja​​vaScript 克隆任何东西

2. 在 Javascript 中复制对象

于 2013-03-01T07:40:46.203 回答