So the answer is yes and no.
As follows from some answer, you can create a binding element and use it for parsing, which is mainly internal code.
var url = document.createElement("A");
url.href = "http://stackoverflow.com/question?hello=world#foo";
console.log('// expected: "stackoverflow.com", "/question"');
console.log('// got: "' + url.hostname + '", "' + url.pathname + '"');
output --> got: "stackoverflow.com", "/question"
url.hash = "bar";
url.search = "";
console.log('// expected: "http://stackoverflow.com/question#bar"');
console.log('// got: "' + url.href + '"');
output --> got: "http://stackoverflow.com/question?#bar"
Live demo: http://jsfiddle.net/roberkules/H48dt/
The only difference is that ? not deleted after freeing the query string.
"API":
url.protocol
url.host
url.port
url.pathname
url.search
url.hash