Add some optimizations to often used functions

This commit is contained in:
Mathias Küsel 2016-01-12 09:47:55 +01:00
parent ff94a54891
commit 977d45a3e0

View File

@ -11,24 +11,24 @@
//-- Basic js utility methods //-- Basic js utility methods
helpers.each = function(loopable, callback, self, reverse) { helpers.each = function(loopable, callback, self, reverse) {
var additionalArgs = Array.prototype.slice.call(arguments, 3);
// Check to see if null or undefined firstly. // Check to see if null or undefined firstly.
if (loopable) { var i, len;
if (loopable.length === +loopable.length) { if (helpers.isArray(loopable)) {
var i; len = loopable.length;
if (reverse) { if (reverse) {
for (i = loopable.length - 1; i >= 0; i--) { for (i = len - 1; i >= 0; i--) {
callback.apply(self, [loopable[i], i].concat(additionalArgs)); callback.call(self, loopable[i], i);
} }
} else { } else {
for (i = 0; i < loopable.length; i++) { for (i = 0; i < len; i++) {
callback.apply(self, [loopable[i], i].concat(additionalArgs)); callback.call(self, loopable[i], i);
} }
} }
} else { } else if (typeof loopable === 'object') {
for (var item in loopable) { var keys = Object.keys(loopable);
callback.apply(self, [loopable[item], item].concat(additionalArgs)); len = keys.length;
} for (i = 0; i < len; i++) {
callback.call(self, loopable[keys[i]], keys[i]);
} }
} }
}; };
@ -48,7 +48,12 @@
return objClone; return objClone;
}; };
helpers.extend = function(base) { helpers.extend = function(base) {
helpers.each(Array.prototype.slice.call(arguments, 1), function(extensionObject) { var len = arguments.length;
var additionalArgs = [];
for(var i = 1; i < len; i++) {
additionalArgs.push(arguments[i]);
}
helpers.each(additionalArgs, function(extensionObject) {
helpers.each(extensionObject, function(value, key) { helpers.each(extensionObject, function(value, key) {
if (extensionObject.hasOwnProperty(key)) { if (extensionObject.hasOwnProperty(key)) {
base[key] = value; base[key] = value;