0

我使用 MooTools 创建了一个新类。我的课看起来像这样

更新:

var c=new Class({
    a:'',
    b:'',
    c:'',
    d:'',
initialize:function(ee){
this.e=ee;
},
buildJSON:function()
{
var cInstance=new c(this.e);
cInstance.a=this.a;
cInstance.b=this.b;
cInstance.c=this.c;
cInstance.d=this.d;

return (JSON.encode(cInstance));
}
});

var x=new c("action");
x.a="Hello a";
x.b="Hello b";
x.c="Hello c";
x.d="Hello d";

alert (x.buildJSON());​

这是一个非常简单的类。现在,如果您尝试一下,JSON 上有一个额外的键:

"$caller":null,
"caller":null
4

1 回答 1

4

$caller并且caller都是由 MooTools 类添加的属性。

它们的存在是为了帮助使用该parent方法。JSON.encode在类实例上使用之前,您应该克隆对象并清除不必要的属性。

您可以克隆this和删除$callercaller从克隆中删除。

var c=new Class({
    a:'',
    b:'',
    c:'',
    d:'',

    initialize: function(ee) {
        this.e=ee;
    },

    buildJSON: function() {
        var data = Object.clone(this);
        delete data.$caller;
        delete data.caller;

        return (JSON.encode(data));
    }
});

var x=new c("action");
x.a="Hello a";
x.b="Hello b";
x.c="Hello c";
x.d="Hello d";

alert (x.buildJSON());​
于 2012-07-27T23:45:15.403 回答