关于Backbone.js中的get和set方法的问题

时间:2012-01-08 08:48:42

标签: javascript backbone.js

以下是使用getset

的示例
Person = Backbone.Model.extend({
    defaults: {
        name: 'Fetus',
        age: 0,
        children: []
    },
    initialize: function(){
        alert("Welcome to this world");
    },
    adopt: function( newChildsName ){
        var children_array = this.get("children");
        children_array.push( newChlidsName );
        this.set({ children: children_array });
    }
});

var person = new Person({
    name: "Thomas",
    age: 67,
    children: ['Ryan']
});

var age = person.get("age");
var name = person.get("name");
var children = person.get("children");
  1. 我想知道这些方法是否是Backbone.js,Underscore.js或JavaScript的一部分?
  2. 为什么在Backbone.js中执行此操作:person.set({ age: 67});而不是:person.age="age";

2 个答案:

答案 0 :(得分:4)

  1. 骨干。
  2. 因为调用方法(person.set({ age: 67});)而不是设置属性(person.age="age";)允许Backbone在幕后执行更多操作,而不仅仅是更改age的值。例如,它会更新您视图中的内容。

答案 1 :(得分:2)

我们添加了Backbone模型getter和setter,它们可以完全满足您的需求。见this code。现代浏览器支持它,但旧版本是不可能的。

原因是设置属性不会触发事件,而通过函数设置值可以触发Backbone需要正常运行的事件。