Use ES5 properties with Backbone. Goodbye get() and set()!


A small Backbone plugin that lets you use ECMAScript 5 properties on your Backbone models. Instead of doing:

mymodel.set('name', 'Bob');

with Backprop you can write this instead:

console.log(; = 'Bob';

You can install it from npm with npm install backprop.

Initialize the plugin with:


This will replace Backbone.Model.extend with a version that creates the properties, and creates, a function that you can use to define properties on your models.

Then in your models write something like:

var User = Backbone.Model.extend({
    name:{ default: 'Jonas', coerce: String }),
    numFollowers:{ default: 0, coerce: Number });

Also, Backprop is CommonJS-friendly, so you can use it in Node or with client-side module systems like Browserify:

var Backprop = require('backprop'); takes an optional hash as its only argument, and the following keys are supported to make dealing with properties a bit more pleasant:

default Lets you specify a default value for the property. This will override anything that was set in the defaults hash for this attribute name. Basically just a convenient shorthand so you can keep your default value close to the property definition.

coerce Specify a function that coerces the property's value any time it is set. For example:

var Cat = Backbone.Model.extend({
    name:{ coerce: String }),
    lives:{ coerce: Number })
var c = new Cat; = 42;
console.log( === '42')    // prints true
c.lives = '9';
console.log(c.lives === 9)      // prints true
git clone git://
cd backprop
npm test

Partial inspiration came from this gist: