2012-03-19 11 views

risposta

12

Se si guarda il codice sorgente, la funzione get chiama solo a this.attributes[name].

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

Il vantaggio, però, è almeno duplice:

1) un'API coerente che riduce la quantità di codice scritto

2) la possibilità di ignorare la Metodo get e fornire un controllo di accesso più complesso

Ad esempio, esistono diversi plug-in per il backbone che sostituiscono il modo in cui i modelli funzionano per fornire funzionalità del modello annidato. è molto facile per loro per consentire di scrivere un metodo get come questo:

model.get("submodel.attr")

e che hanno analizzare fuori il attr del sub-modello di submodel. Senza il metodo get, sarebbe più difficile renderlo coerente con l'API.

Il vantaggio di fondo di questo è l'incapsulamento, però. Fino a quando JavaScript fornisce proprietà get/set reali che ci permettono di scrivere codice per getter e setter, saremo bloccati con metodi di lavoro come Backbone get e set.

+1

Puoi chiarire come 'user.get ('name')' vs 'user.name' riduce la quantità di codice? –

+0

Suppongo che intenda usare 'user.get ('name')' invece di 'user.attributes ['name']' che è più lungo. Per accedere ai modelli annidati, tuttavia, userei questa sintassi: 'user.attributes.name.first' – orad

2

Bene .. per i principianti, model.attribute NON è assolutamente corretto. model.set() è necessario per attivare gli eventi change. È molto probabile che tu lo dimentichi se prendi l'abitudine di usare model.attributes[attribute] invece di model.get(attribute)

Problemi correlati