在macOS 10.13.1 上使用 Chrome 63 。
我使用Object.assign
和new URL()作为源对象,但它总是提供一个空对象?这似乎是一种奇怪的行为。这是我的代码:
let url = new URL('http://www.yahoo.com');
console.log(url);
let data = Object.assign({}, url);
console.log(data);
为什么数据是空对象,而url
具有完整的URL对象,如下所示:
{
href: "http://www.yahoo.com/",
origin: "http://www.yahoo.com",
protocol: "http:",
username: "",
password: ""
...
}
我也尝试过:
let data = Object.assign({}, ...url);
但它给出了:
未捕获的TypeError:undefined不是函数
答案 0 :(得分:5)
我怀疑是因为URL
的属性不是enumerable
。注意当你Object.keys(url)
时你也得到一个空白数组? Object.assign
和Object.keys
都可以使用enumerable
属性。
url
对象上的属性不是enumerable.
答案 1 :(得分:2)
您可以简单地克隆网址:
let url = new URL('http://www.yahoo.com');
console.log(url);
let data = new URL(url);
console.log(data);
网址语法:
url = new URL(url, [base])
您仍然可以使用现有的URL对象作为基础 将自身字符串化为对象的href属性。