Backbone.js 为什么在主干网中使用getter和setter';什么样的型号?

Backbone.js 为什么在主干网中使用getter和setter';什么样的型号?,backbone.js,Backbone.js,为什么有骨干模型的接受者和接受者?没有私有/受保护属性,因此getter和setter对于封装来说有点无用。我知道它们对验证很有用,但除此之外,如果我们可以绕过它们,它们的效用是什么 set不仅仅是做下面的事情 this.attributes["key"] = value; 如果您绕过它,您将错过它正在执行的所有其他功能 目前它有两种功能 1.在将值分配给属性之前,它正在调用\u validate方法 2.如果您侦听属性更改,它将触发change事件 如果将来它们添加了更多功能,您可能会丢失它

为什么有骨干模型的接受者和接受者?没有私有/受保护属性,因此getter和setter对于封装来说有点无用。我知道它们对验证很有用,但除此之外,如果我们可以绕过它们,它们的效用是什么

set
不仅仅是做下面的事情

this.attributes["key"] = value;
如果您绕过它,您将错过它正在执行的所有其他功能

目前它有两种功能

1.在将值分配给属性之前,它正在调用
\u validate
方法

2.如果您侦听属性更改,它将触发
change
事件


如果将来它们添加了更多功能,您可能会丢失它们,如果您绕过
设置

您刚才回答了您的问题吗?:)“使属性
私有化
”与“封装”不同。封装意味着从调用方的角度隐藏逻辑属性的实际存储方式。@Maxwell Yes。我的观点是,即使不能将字段/属性设置为私有,getter和setter以及封装也是有意义的。(例如,如果您想要一个属性实际上不受属性支持的属性,如根据其半径计算的
对象周长的标准示例,尽管这不适用于主干。)在主干中,它主要用于跟踪更改和发出更改事件。@Maxwell这只是使用Javascript作为底层语言的产物。封装是设计的一个属性——在本例中,是主干模型层设计的一个属性。如果您绕过了getter和setter,那么您使用的库是错误的,可能会引入bug。您打算如何在不调用
set
的情况下触发
'change'
事件?事件在主干中有点重要。