2012-07-27 61 views
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 
+0

你可以發佈這個jsfiddle嗎? – Shouvik 2012-07-27 04:15:24

+0

這裏 http://jsfiddle.net/NNf5M/ – 2012-07-27 04:24:11

+0

https://groups.google.com/forum/#!msg/mootools-users/bJ5HiHnm-VU/i4LZaLmTs2EJ這裏是發佈與誰有同樣的問題的人。 HTH – Shouvik 2012-07-27 05:55:26

回答

4

$callercaller都是通過性能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());​