2012-03-19 58 views
8

什麼優點/理由骨幹-JS使用的語法骨幹JS的區別屬性

//using a Model instance called model 

model.get('attribute') 

,而不是

model.attribute 

我只是開始使用骨幹我總是試圖直接訪問屬性

回答

12

如果你看源代碼,get功能只是撥打this.attributes[name]

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

的好處,雖然是至少兩個:

1)減少了代碼你正在編寫

2)覆蓋的能力的量一致的API get方法,並提供更復雜的訪問控制

例如,有幾個插件主幹網覆蓋模型,以提供嵌套模式的能力是如何工作的。這很容易讓他們讓你寫一個get方法是這樣的:

model.get("submodel.attr")

,並具有解析出submodel子模型的attr。如果沒有get方法,使其與API保持一致會更困難。

從這個根本的好處是封裝,雖然。直到JavaScript提供的是讓我們寫getter和setter代碼真正的get/set屬性,我們將堅持與變通方法,如骨幹getset

+1

你能否澄清一下user.get('name')''user.name'如何減少代碼量? – 2012-10-16 15:03:49

+0

我猜他的意思是你用的''而不是user.attributes [「名」]'是'較長user.get(「名」)。但是,爲了訪問嵌套模型,我會使用這個語法:'user.attributes.name.first' – orad 2012-10-16 20:42:48

2

嗯..對於初學者來說,model.attribute是絕對不正確的。 model.set()需要爲了得到change事件火災。如果你習慣於使用model.attributes[attribute]而不是model.get(attribute)