从精美的手册中:
toJSON行为
如果要被字符串化的对象具有一个名为
toJSON的属性,其值是一个函数,那么该toJSON方法将自定义JSON字符串化行为:代替被序列化的对象,toJSON方法被调用时返回的值将被序列化,而不是被序列化的对象。
这就是为什么Backbone使用该
toJSON方法进行序列化并给定名为的模型实例的原因
m,您可以这样说:
var string = JSON.stringify(m);
并从中获取属性,
m而不是从服务器中忽略一堆噪音。
也就是说,主要区别在于
toJSON产生的值(数字,布尔值,对象等)将转换为JSON字符串,而
JSON.stringify始终产生一个字符串。
该默认骨干
toJSON仅仅是这个(适用机型):
return _.clone(this.attributes);
这样就
m.toJSON()为您提供了模型属性的 浅表
副本。如果有数组或对象作为属性值,那么您将结束意外的引用共享。注意,
Backbone.Model#clone也遭受这个问题。
如果您想安全地克隆模型的数据,则可以将其发送出去
JSON.stringify,然后
JSON.parse获得深层副本:
var data = JSON.parse(JSON.stringify(model_instance));var cloned_model = new M(data);
model_instance您的骨干模型实例在哪里
M?



