summaryrefslogtreecommitdiff
path: root/lib/url.js
diff options
context:
space:
mode:
authorMajid Arif Siddiqui <me@majidarif.com>2014-08-14 11:15:24 +0800
committerTrevor Norris <trev.norris@gmail.com>2014-09-05 09:19:32 -0700
commit176f0bd3dfd58faf1675851cd2029e05d302f1fb (patch)
tree0beec659659a181c406b6d70dc71a0cf590bccd4 /lib/url.js
parent86bb7fa5cdc2f0492ecc2972c00b6805b6be8e9c (diff)
downloadandroid-node-v8-176f0bd3dfd58faf1675851cd2029e05d302f1fb.tar.gz
android-node-v8-176f0bd3dfd58faf1675851cd2029e05d302f1fb.tar.bz2
android-node-v8-176f0bd3dfd58faf1675851cd2029e05d302f1fb.zip
lib: improved forEach object performance
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Diffstat (limited to 'lib/url.js')
-rw-r--r--lib/url.js24
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/url.js b/lib/url.js
index ec417a8aa4..7d2ac4e2d0 100644
--- a/lib/url.js
+++ b/lib/url.js
@@ -451,9 +451,11 @@ Url.prototype.resolveObject = function(relative) {
}
var result = new Url();
- Object.keys(this).forEach(function(k) {
- result[k] = this[k];
- }, this);
+ var tkeys = Object.keys(this);
+ for (var tk = 0; tk < tkeys.length; tk++) {
+ var tkey = tkeys[tk];
+ result[tkey] = this[tkey];
+ }
// hash is always overridden, no matter what.
// even href="" will remove it.
@@ -468,10 +470,12 @@ Url.prototype.resolveObject = function(relative) {
// hrefs like //foo/bar always cut to the protocol.
if (relative.slashes && !relative.protocol) {
// take everything except the protocol from relative
- Object.keys(relative).forEach(function(k) {
- if (k !== 'protocol')
- result[k] = relative[k];
- });
+ var rkeys = Object.keys(relative);
+ for (var rk = 0; rk < rkeys.length; rk++) {
+ var rkey = rkeys[rk];
+ if (rkey !== 'protocol')
+ result[rkey] = relative[rkey];
+ }
//urlParse appends trailing / to urls like http://www.example.com
if (slashedProtocol[result.protocol] &&
@@ -493,9 +497,11 @@ Url.prototype.resolveObject = function(relative) {
// because that's known to be hostless.
// anything else is assumed to be absolute.
if (!slashedProtocol[relative.protocol]) {
- Object.keys(relative).forEach(function(k) {
+ var keys = Object.keys(relative);
+ for (var v = 0; v < keys.length; v++) {
+ var k = keys[v];
result[k] = relative[k];
- });
+ }
result.href = result.format();
return result;
}