From cb29632a5802e930262919b3db64ca4806c5cfc7 Mon Sep 17 00:00:00 2001 From: Karl Seamon Date: Tue, 17 Dec 2013 14:22:04 -0500 Subject: [PATCH] perf: use faster check for $$ prefix Use two calls to charAt instead of substr to detect a $$prefix in the shallowCopy functions. This makes shallowCopy 25-50% faster (depending on which browser is used). http://jsperf.com/angular-shallow-copy Closes #5457 --- src/Angular.js | 2 +- src/ngResource/resource.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Angular.js b/src/Angular.js index e32c3739bbb7..88ea452b3749 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -769,7 +769,7 @@ function shallowCopy(src, dst) { for(var key in src) { // shallowCopy is only ever called by $compile nodeLinkFn, which has control over src // so we don't need to worry about using our custom hasOwnProperty here - if (src.hasOwnProperty(key) && key.substr(0, 2) !== '$$') { + if (src.hasOwnProperty(key) && key.charAt(0) !== '$' && key.charAt(1) !== '$') { dst[key] = src[key]; } } diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index 281dd4ac24be..a007c7b16d4e 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -35,7 +35,7 @@ function shallowClearAndCopy(src, dst) { }); for (var key in src) { - if (src.hasOwnProperty(key) && key.substr(0, 2) !== '$$') { + if (src.hasOwnProperty(key) && key.charAt(0) !== '$' && key.charAt(1) !== '$') { dst[key] = src[key]; } }