2012-03-19 66 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)