ok.js
function (obj, event, fn) {
		var listeningTo = this._listeningTo;
		if (!listeningTo) {
			return;
		}
		var remove = !event && !fn;
		if (!fn && typeof event === 'object') {
			fn = this;
		}
		if (obj) {
			(listeningTo = {})[obj._listenId] = obj;
		}
		for (var id in listeningTo) {
			obj = listeningTo[id];
			obj.off(event, fn, this);
			if (remove) {
				delete this._listeningTo[id];
			}
		}
	}
function (obj, event, fn) {
		var listeningTo = this._listeningTo;
		if (!listeningTo) {
			return;
		}
		var remove = !event && !fn;
		if (!fn && typeof event === 'object') {
			fn = this;
		}
		if (obj) {
			(listeningTo = {})[obj._listenId] = obj;
		}
		for (var id in listeningTo) {
			obj = listeningTo[id];
			obj.off(event, fn, this);
			if (remove) {
				delete this._listeningTo[id];
			}
		}
	}
function ( obj , event , fn ) { var listeningTo = this . _listeningTo ; if ( ! listeningTo ) { return ; } var remove = ! event && ! fn ; if ( ! fn && typeof event === 'object' ) { fn = this ; } if ( obj ) { ( listeningTo = { } ) [ obj . _listenId ] = obj ; } for ( var id in listeningTo ) { obj = listeningTo [ id ] ; obj . off ( event , fn , this ) ; if ( remove ) { delete this . _listeningTo [ id ] ; } } }
Stop observing another object
@param {Events=} obj Object to stop observing. Omit to stop observing all
objects.
@param {string=} event Event name. Omit to stop observing all events on
this object.
@param {Function} fn Callback function. Stops this function executing
when `event` is triggered.
Stop observing another object