Перебирать свойства объекта URL JavaScript - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь сопоставить экземпляр класса JavaScript URL с простым объектом и не могу понять, почему он не работает.

Я предполагаю, что это потому, что свойства не перечислимы, но мне не понятно, почему это так.

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 }

1 Ответ

0 голосов
/ 22 февраля 2019

Если вы проверите _proto экземпляра URL, который вы увидите, эти поля являются геттерами и сеттерами.Поэтому Object.entries / keys здесь не будут работать

enter image description here

Должен работать приведенный ниже цикл Howeve

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);

Вот выводHere is the output

...