I'm learning some Backbone and I'm confused as to what this
is inside of the model.
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());
What is going on in this.bind
? What is change:name
? Are initialize
and defaults
simply just methods inside of a javascript object?
this
insideinitialize
is the instance of the model..bind
is an alias for.on
method inside backbone.Events module which allows you to bind event handlers on an objectchange:name
is just the event name, it allows you to track changes of a model's attribute named'name'
.initialize
is a constructor method which will be called initially when you instantiate the model.defaults
is an object (or it can be a function) that sets default model attributes.So
initialize
anddefaults
are indeed methods inside an object (except thatdefaults
can be also a property), but they have special meaning for backbone. And that object is extended with all other methods and properties of Backbone.Model which makes it a functional model.read more in backbone docs