迭代 JavaScript URL 对象的属性
Iterate over JavaScript URL Object's Properties
我正在尝试将 JavaScript 的 URL class 的实例映射到普通对象,但无法理解为什么它不起作用。
我猜这是因为属性不可枚举,但我不清楚为什么会这样。
let input = 'https://www.google.com/index.html?bar=baz#foo'
let url = new URL(input)
console.log(url.origin)
console.log(url.protocol)
console.log(url.host)
console.log(url.pathname)
console.log(url.hash)
console.log(url.search)
let urlMap = Object.entries(url).reduce((map, [key, value]) => {
map[key] = value
return map
}, {})
console.log(urlMap) // returns {}
这是我能做的吗?我的目标是像这样组成 url 属性:
return { ...url, pathname: alteredPathname }
如果您检查 url 实例的 _proto,您会看到,这些字段是 getter 和 setter。因此 Object.entries / 键在这里不起作用
但是下面的循环应该可以工作
const input = 'https://www.google.com/index.html?bar=baz#foo'
const url = new URL(input)
const map = {};
for (let key in url) {
map[key] = url[key]
}
console.log(map);
这是输出
我正在尝试将 JavaScript 的 URL class 的实例映射到普通对象,但无法理解为什么它不起作用。
我猜这是因为属性不可枚举,但我不清楚为什么会这样。
let input = 'https://www.google.com/index.html?bar=baz#foo'
let url = new URL(input)
console.log(url.origin)
console.log(url.protocol)
console.log(url.host)
console.log(url.pathname)
console.log(url.hash)
console.log(url.search)
let urlMap = Object.entries(url).reduce((map, [key, value]) => {
map[key] = value
return map
}, {})
console.log(urlMap) // returns {}
这是我能做的吗?我的目标是像这样组成 url 属性:
return { ...url, pathname: alteredPathname }
如果您检查 url 实例的 _proto,您会看到,这些字段是 getter 和 setter。因此 Object.entries / 键在这里不起作用
但是下面的循环应该可以工作
const input = 'https://www.google.com/index.html?bar=baz#foo'
const url = new URL(input)
const map = {};
for (let key in url) {
map[key] = url[key]
}
console.log(map);
这是输出