Backbone模型中的“this”是什么?

时间:2016-12-01 03:18:05

标签: javascript backbone.js

我正在学习一些Backbone而且我对模型中的this感到困惑。

Person = Backbone.Model.extend({
    initialize: function() {
        console.log('hello world');
        this.bind("change:name", function() {
            console.log(this.get('name') + " is now the value for name");
        });
        this.bind('invalid', function( model, error ) {
            console.error(error);
        });
    },
    defaults: {
        name: "Bob Hope",
        height: "unknown"
    },
    validate: function ( attributes ) {
        if( attributes.name == 'Joe' ) {
            return "Uh oh, you're name is Joe!";
        }
    }
});
var person = new Person();
person.set({name: "Joe", height:"6 feet"}, {validate:true});
console.log(person.toJSON());

this.bind发生了什么?什么是change:nameinitializedefaults只是javascript对象中的方法吗?

1 个答案:

答案 0 :(得分:3)

this内的{p> initialize是模型的实例。

.bind.on模块中backbone.Events方法的别名,它允许您绑定对象上的事件处理程序

change:name只是事件名称,它允许您跟踪名为'name'的模型属性的更改。

initialize是一个构造函数方法,在实例化模型时将首先调用它。

defaults是一个设置默认模型属性的对象(或者它可以是一个函数)。

所以initializedefaults确实是对象内部的方法(除了defaults也可以是属性),但它们对于主干有特殊意义。该对象通过Backbone.Model的所有其他方法和属性进行了扩展,使其成为一个功能模型。

backbone docs

中阅读更多内容