The heart of MooTools.

License:
MIT-style license.
Authors:
The MooTools production team (http://mootools.net/developers/)
  1. 24
  2. 25
  3. 26
  4. 27
(function(){ var arrayish = Array.prototype.indexOf; var stringish = String.prototype.indexOf

Speedup 1: Avoid typeOf

  1. 29
  2. 30
  3. 31
  4. 32
  5. 33
  6. 34
  7. 35
  8. 36
  9. 37
  10. 38
  11. 39
  12. 40
var cloneOf = function(item){ if (item && typeof(item) == 'object' && item.indexOf != stringish && !(item.nodeName && item.nodeType)) { if (item.indexOf == arrayish) return item.clone(); else return Object.clone(item); } return item; }; Array.implement('clone', function(){ var i = this.length, clone = new Array(i); while (i--) clone[i] = cloneOf(this[i]); return clone; });

Speedup 2: Avoid typeOf

  1. 43
  2. 44
  3. 45
  4. 46
  5. 47
  6. 48
  7. 49
  8. 50
  9. 51
  10. 52
  11. 53
  12. 54
  13. 55
var mergeOne = function(source, key, current){ if (current && typeof(current) == 'object' && current.indexOf != stringish && !(current.nodeName && current.nodeType)) { if (current.indexOf != arrayish) { var target = source[key]; if (target && typeof(target) == 'object' && current.indexOf != stringish && target.indexOf != arrayish) Object.merge(source[key], current); else source[key] = Object.clone(current); } else source[key] = current.clone(); } else source[key] = current; return source; }; Object.extend({

Speedup 3: Avoid typeOf

  1. 58
  2. 59
  3. 60
  4. 61
  5. 62
  6. 63
  7. 64
  8. 65
  9. 66
  10. 67
  11. 68
  12. 69
  13. 70
  14. 71
  15. 72
  16. 73
  17. 74
merge: function(source, k, v){ if (typeof(k) == 'string' || (k && k.indexOf == stringish)) return mergeOne(source, k, v); for (var i = 1, l = arguments.length; i < l; i++){ var object = arguments[i]; for (var key in object) mergeOne(source, key, object[key]); } return source; }, clone: function(object){ var clone = {}; for (var key in object) clone[key] = cloneOf(object[key]); return clone; } }); })();