From 81b9245d25cc7a3027f21fe13bcb653a7a552c09 Mon Sep 17 00:00:00 2001 From: Nathan Dinsmore Date: Wed, 17 Jun 2015 19:10:30 -0400 Subject: Optimize copy() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1356.2 ms before => 73.3 ms after (on a large block stack) --- morphic.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'morphic.js') diff --git a/morphic.js b/morphic.js index 737e944..013660e 100644 --- a/morphic.js +++ b/morphic.js @@ -1266,18 +1266,16 @@ function copy(target) { } if (target instanceof target.constructor && target.constructor !== Object) { - c = clone(target.constructor.prototype); - for (property in target) { - if (Object.prototype.hasOwnProperty.call(target, property)) { - c[property] = target[property]; - } + c = Object.create(target.constructor.prototype); + var keys = Object.keys(target); + for (var l = keys.length, i = 0; i < l; i++) { + property = keys[i]; + c[property] = target[property]; } } else { c = {}; for (property in target) { - if (!c[property]) { - c[property] = target[property]; - } + c[property] = target[property]; } } return c; -- cgit v1.3.1