/* Object.prototype */ Object.extend = function(destination, source) { for (property in source) { source.own(property) && (destination[property] = source[property]) } return destination; } Object.prototype.extend = function(object) { return Object.extend.apply(this, [this, object]); } /* Object.prototype.own = function(key){ return this.hasOwnProperty(key) } */ Object.prototype.own = Object.prototype.hasOwnProperty; Object.prototype.extend({ forEach : function(callback,thisObject){ for(var i in this) this.own(i) && callback.call(thisObject,this[i],i,this) }, every : function(callback,thisObject){ for(var i in this) if(this.own(i)){ if(!callback.call(thisObject,this[i],i,this)) return false; } return true; }, keys : function(){ var tmp = []; for(var i in this) this.own(i) && tmp.push(i); return tmp; }, values : function(){ var tmp = []; for(var i in this) this.own(i) && tmp.push(this[i]); return tmp; }, each : function(func){ for(var i in this) this.own(i) && func(this[i],i,this) }, map : function(callback,thisObject){ var tmp = {}; for(var i in this) this.own(i) && (tmp[i] = callback.call(thisObject,this[i],i,this)); return tmp }, toArray : function(){ var tmp = []; for(var i=0;i