From ec28f81409f9c58bcbc92acb57ba7a8a3824a7fa Mon Sep 17 00:00:00 2001 From: Max Nanasy Date: Thu, 24 May 2012 18:26:37 -0700 Subject: [PATCH] Fixed handling of parameters with names that are keys in Object.prototype. --- querystring.js | 2 +- test-querystring.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/querystring.js b/querystring.js index 87c4391..e4c9b40 100644 --- a/querystring.js +++ b/querystring.js @@ -145,7 +145,7 @@ QueryString.parse = QueryString.decode = function(qs, sep, eq) { var k = QueryString.unescape(x[0], true); var v = QueryString.unescape(x.slice(1).join(eq), true); - if (!(k in obj)) { + if (!(obj.hasOwnProperty(k))) { obj[k] = v; } else if (!Array.isArray(obj[k])) { obj[k] = [obj[k], v]; diff --git a/test-querystring.js b/test-querystring.js index b56275f..1a3a4d6 100644 --- a/test-querystring.js +++ b/test-querystring.js @@ -26,7 +26,8 @@ var qsTestCases = [ 'undef': ''}], [' foo = bar ', '%20foo%20=%20bar%20', {' foo ': ' bar '}], ['foo=%zx', 'foo=%25zx', {'foo': '%zx'}], - ['foo=%EF%BF%BD', 'foo=%EF%BF%BD', {'foo': '\ufffd' }] + ['foo=%EF%BF%BD', 'foo=%EF%BF%BD', {'foo': '\ufffd' }], + ['toString=bar', 'toString=bar', {'toString': 'bar'}] ]; // [ wonkyQS, canonicalQS, obj ]