Browse Source

url: set toStringTag for the URL class

PR-URL: https://github.com/nodejs/node/pull/10562
Fixes: https://github.com/nodejs/node/issues/10554
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
v6
James M Snell 8 years ago
parent
commit
f5d92f3563
  1. 22
      lib/internal/url.js
  2. 21
      test/parallel/test-whatwg-url-tostringtag.js

22
lib/internal/url.js

@ -222,6 +222,10 @@ class URL {
parse(this, input, base);
}
get [Symbol.toStringTag]() {
return this instanceof URL ? 'URL' : 'URLPrototype';
}
get [special]() {
return (this[context].flags & binding.URL_FLAGS_SPECIAL) !== 0;
}
@ -641,15 +645,11 @@ class URLSearchParams {
// "associated url object"
this[context] = null;
}
// Class string for an instance of URLSearchParams. This is different from
// the class string of the prototype object (set below).
Object.defineProperty(this, Symbol.toStringTag, {
value: 'URLSearchParams',
writable: false,
enumerable: false,
configurable: true
});
get [Symbol.toStringTag]() {
return this instanceof URLSearchParams ?
'URLSearchParams' : 'URLSearchParamsPrototype';
}
append(name, value) {
@ -804,12 +804,6 @@ class URLSearchParams {
}
// https://heycam.github.io/webidl/#es-iterable-entries
URLSearchParams.prototype[Symbol.iterator] = URLSearchParams.prototype.entries;
Object.defineProperty(URLSearchParams.prototype, Symbol.toStringTag, {
value: 'URLSearchParamsPrototype',
writable: false,
enumerable: false,
configurable: true
});
// https://heycam.github.io/webidl/#dfn-default-iterator-object
function createSearchParamsIterator(target, kind) {

21
test/parallel/test-whatwg-url-tostringtag.js

@ -0,0 +1,21 @@
'use strict';
require('../common');
const assert = require('assert');
const URL = require('url').URL;
const toString = Object.prototype.toString;
const url = new URL('http://example.org');
const sp = url.searchParams;
const test = [
[toString.call(url), 'URL'],
[toString.call(Object.getPrototypeOf(url)), 'URLPrototype'],
[toString.call(sp), 'URLSearchParams'],
[toString.call(Object.getPrototypeOf(sp)), 'URLSearchParamsPrototype']
];
test.forEach((row) => {
assert.strictEqual(row[0], `[object ${row[1]}]`,
`${row[0]} !== [object ${row[1]}]`);
});
Loading…
Cancel
Save