Edit in JSFiddle

try
{
    var Player = Backbone.Model.extend(
        {
            
        });
    
    var Players = Backbone.Collection.extend(
        {
            model: Player,
            initialize:
                function()
                {
                    this.on( "change:name", this.changeName, this);
                    this.on( "change:age", this.changeAge, this);
                },
            changeName:
                function( model, val, options)
                {
                    var prev = model.previousAttributes();
                    this.log( model.get("name") + " changed his name from " + prev.name);
                },
            changeAge:
                function( model, val, options)
                {
                    var prev = model.previousAttributes();
                    this.log( model.get("name") + " changed his age from " + prev.age + " to " + model.get("age"));
                },
            log:
                function( message)
                {
                    debugger
                    $("#results").append( "<li>" + message + "</li>");
                }
        });
    
    var daz = new Player( {name:"daz", age:33});
    var gaz = new Player( {name:"gaz", age:38});
    var baz = new Player( {name:"baz", age:34});

    var players = new Players([daz, gaz, baz]);

    daz.set( {name:"Daz"});
    baz.set( {age:43});
}
catch(e)
{
    alert( e.message);
}
<ul id="results"></ul>

              
            
          
            
              

External resources loaded into this fiddle: