总是等同于使用其中一种吗?
这些在控制台中打印相同的东西
class Model extends Backbone.Model
defaults:
some: 'thing'
other: 'item'
model = new Model
console.log model.attributes
console.log model.toJSON()
答案 0 :(得分:14)
toJSON()是JavaScript JSON序列化程序在序列化对象时查找的标准方法。
在Backbone的上下文中,如果在模型中覆盖toJSON,则可以更改保存时发送到服务器的值的格式。例如,您可以过滤出只读字段,如时间戳。
attributes是包含模型数据的JavaScript对象,当您使用model.set()时,它会被更改。除非您不使用set()来更改值,否则您将绕过所有事件并释放主干的一些好处。因此,如果您知道自己在做什么,请直接使用属性。