2012-03-19 22 views

Respuesta

12

Si miras el código fuente, la función get simplemente llama al this.attributes[name].

http://backbonejs.org/docs/backbone.html#section-31

El beneficio, sin embargo, es al menos doble:

1) una API consistente que reduce la cantidad de código que está escribiendo

2) la capacidad de anular la get método y proporcionar un control de acceso más complejo

Por ejemplo, hay varios complementos para la red troncal que anulan el funcionamiento de los modelos para proporcionar capacidades de modelos anidados. que es muy fácil para ellos para permitirle escribir un método get así:

model.get("submodel.attr")

y tienen que analizar fuera de la attr de la sub-modelo de submodel. Sin el método get, sería más difícil hacer que esto sea coherente con la API.

El beneficio subyacente de esto es la encapsulación, sin embargo. Hasta que JavaScript proporcione verdaderas propiedades get/set que nos permitan escribir código para getters y setters, nos quedaremos atascados con métodos de rutina como Backbone's get y set.

+1

¿Puede aclarar cómo 'user.get ('name')' versus 'user.name' reduce la cantidad de código? –

+0

Supongo que quiere decir que usa 'user.get ('nombre')' en lugar de 'user.attributes ['name']' que es más largo. Para acceder a modelos anidados, sin embargo, usaría esta sintaxis: 'user.attributes.name.first' – orad

2

Bueno ... para empezar, model.attribute es absolutamente incorrecto. model.set() es necesario para que se activen los eventos change. Es muy probable que olvide esto si adquiere el hábito de usar model.attributes[attribute] en lugar de model.get(attribute)

Cuestiones relacionadas