JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.com/backbone/backbone-min.js"></script>
Debe visualizar el resultado del script en la consola.

JavaScript

(function(){
    // Crear modelo
    var DesarrolladorModel = Backbone.Model.extend({
        initialize: function(){
            console.info("Nuevo modelo de: DesarrolladorModel");

            this.on("change:editor", function(){
                console.log("Has modificado el editor");
            });

            // Evento a la escuha del error
            this.on("error", function(model, error){
                console.log(error);
            });
        },
        defaults:{
            nombre: "Pepito Perez",
            edad: 24,
            lenguajes:[]
        },
        addLenguaje: function(nuevoLenguaje){
            var array_lenguajes = this.get('lenguajes');
            array_lenguajes.push(nuevoLenguaje);
            this.set({lenguajes:array_lenguajes});
        },

        // Funcion de validacion
        validate: function(attributes){
            if(attributes.editor == "Dreamweaver"){
                return "Dreamweaver no es un editor permitido!";
            }
        }
    });

    // Crear instancia
    var desarrollador = new DesarrolladorModel;

    // Crear otra instancia cambiando valores
    var desarrollador2 = new DesarrolladorModel({
        nombre: "Mario marito",
        edad: 19,
        lenguajes: ["Javascript", "C"],
        editor: "Sublime Text 2"
    });

    // Agregando atributos posteriormente
    desarrollador.set({editor: "Notepad++"});
    
    //Intentamos realizar nuevamente el cambio de editor
    desarrollador.set({editor: "Dreamweaver"});

    // Agregar nuevo lenguaje
    desarrollador.addLenguaje("Python");

    console.dir(desarrollador.attributes);

})();