2013-04-10 66 views

回答

4

这是一个封装问题。通过使用get方法,你说我不在乎它是如何实现的,我只是想要这个属性。所以在将来如果你想重写你的get方法来返回更有意义的东西,那么在你使用该属性的任何地方都不会改变代码。

例如,如果您的模型具有与其关联的属性成本(它是一个数字)。

model.get('cost') //would give you that number say 1999.99 

现在将来假设您希望它返回格式化的字符串,您可以重写get方法。

model.get('cost') // same method would now give you $1999.99 or EUR 1999,99 in french :) 

此外,您正在减少代码量和增加可读性。

model.get('foo')读取比model.attributes.foo好得多;而且它也更短。

2

正如您所提到的,在您的问题中,.get()方法是文档中推荐的方法。尽管直接调用属性会节省几纳秒,但不应该这样做。

的原因是因为它会鼓励别人读你的代码,使用同样的方法设置一个属性:model.attributes.foo = 'blah';

我可能没有告诉你,这是不好的。代码似乎可以工作,因为您在模型上获得了正确的值,但是您绕过了内置在主干中的所有更改跟踪逻辑。如果以这种方式设置属性,则不会触发任何事件。

话虽这么说 - 如果没有其他人阅读你的代码或改变你的代码,但你和你关心的这些额外纳秒多,你知道你会永远使该类型的未来的错误。然后通过一切手段,直接使用属性属性。

相关问题