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()は、配列の単純なプロトタイプ関数であり、正常に機能します。

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

上からの配列x1はinstanceofArrayであり、スライス、結合などのすべての組み込み配列関数をサポートしていますが、プロトタイプ関数の使用は機能しません。

誰かが私がここで間違っていることを知っていますか?

4

2 に答える 2

1

この問題は、Tommy http://dontpanic82.blogspot.se/2010/10/xpages-bug-in-fromjson-with-fix.htmlPaulHannan がバグを記録したというコメントを書いたことと関係があるのでしょうか。それについて報告しますが、8.5.3で修正されているかどうかはわかりません

于 2013-01-03T07:46:58.107 に答える
0

fromJsonを使用してオブジェクトを作成する際の問題は、オブジェクトデータのみが作成され、そのメソッドが作成されたオブジェクトに追加されないことです。したがって、すべてのメソッドを手動で追加するか、新しいオブジェクトのクローンを作成する必要があります。次のリンクは、JavaScriptオブジェクトのクローンを作成するために必要な説明とコードを提供します。

1.JavaScriptですべてを複製する

2.Javascriptでオブジェクトをコピーする

于 2013-03-01T07:40:46.203 に答える