From 04468db44185e3d7968abdb23d77bf623cb5021b Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Wed, 4 Jun 2014 07:20:19 -0700 Subject: [PATCH] perf(shallowCopy): use Object.keys to improve performance This change is not IE8 friendly --- src/Angular.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Angular.js b/src/Angular.js index 523b3da3..d3c59635 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -819,17 +819,22 @@ function copy(source, destination, stackSource, stackDest) { * Creates a shallow copy of an object, an array or a primitive */ function shallowCopy(src, dst) { + var i = 0; if (isArray(src)) { dst = dst || []; - for ( var i = 0; i < src.length; i++) { + for (; i < src.length; i++) { dst[i] = src[i]; } } else if (isObject(src)) { dst = dst || {}; - for (var key in src) { - if (hasOwnProperty.call(src, key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) { + var keys = Object.keys(src); + + for (var l = keys.length; i < l; i++) { + var key = keys[i]; + + if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) { dst[key] = src[key]; } }