function track(property){
      if(!(property in trackedProperties)){
        trackedProperties[property] = true;
        values[property] = model[property];
        Object.defineProperty(model, property, {
          get: function () { return values[property]; },
          set: function(value) {
            values[property] = value;
            getListeners(property).forEach(function(callback){
              callback(value);
            });
          }
        });
      }
    }
function track(property){
      if(!(property in trackedProperties)){
        trackedProperties[property] = true;
        values[property] = model[property];
        Object.defineProperty(model, property, {
          get: function () { return values[property]; },
          set: function(value) {
            values[property] = value;
            getListeners(property).forEach(function(callback){
              callback(value);
            });
          }
        });
      }
    }
function track ( property ) { if ( ! ( property in trackedProperties ) ) { trackedProperties [ property ] = true ; values [ property ] = model [ property ] ; Object . defineProperty ( model , property , { get : function ( ) { return values [ property ] ; } , set : function ( value ) { values [ property ] = value ; getListeners ( property ) . forEach ( function ( callback ) { callback ( value ) ; } ) ; } } ) ; } }
Tracks a property if it is not already tracked.
Tracks a property if it is not already tracked .