Когда вы установите location
строку URL-адреса в сравнении с настройкой location.href
?
location = "http://www.stackoverflow.com";
против
location.href = "http://www.stackoverflow.com";
javascript
химерический
источник
источник
location.href
почты не удалась из-за политики одного и того же происхождения: javascript.info/tutorial/…replace
иassign
: stackoverflow.com/q/1865837/632951 , stackoverflow.com/q/7703689/632951 , stackoverflow.com/q/10302905/632951Ответы:
Вы можете установить
location
прямо, потому что это немного короче. Если вы пытаетесь быть кратким, вы обычно можете опуститьwindow.
тоже.Назначения URL для обоих
location.href
иlocation
определены для работы в JavaScript 1.0, обратно в Netscape 2, и с тех пор были реализованы в каждом браузере. Так что выбирайте и используйте то, что вы найдете наиболее ясным.источник
Даже если оба работают, я бы использовал последний.
location
является объектом, и назначение строки объекту не сулит ничего хорошего для удобства чтения или обслуживания.источник
window.location
: она не требуетSAME ORIGIN
.location = 'http://www.example.com'
кажется супер читабельным. Хотя, как особый случай. Это обратно совместимо и останется совместимым в обозримом будущем.Вроде как уже было сказано,
.location
это объектНо этот человек предложил использовать либо.Но вы будете лучше использовать.href
версию.Объекты имеют свойства по умолчанию, которые, если ничего не указано, они предполагаются. В случаеlocation
объекта это свойство называется.href
. И, не указав ЛЮБОЕ свойство во время присваивания, он примет «href» по умолчанию.Это все хорошо, пока не изменится более поздняя версия объектной модели и не будет больше свойства по умолчанию или свойства по умолчанию. Тогда ваша программа неожиданно обрывается.
Если вы имеете в видуhref
, вы должны указатьhref
.источник
location
работам, потому что свойство было определено так, чтобы это специальное поведение присваивалось обратно в JavaScript 1.0, и каждый браузер с тех пор реализовал это. HTML5 теперь требует этого. Таким образом, хотя назначение может быть более привлекательным или более последовательным.href
, в этом нет преимущества обратной или прямой совместимости.window.location = url
красивееlocation = url
симпатичнееПару лет назад
location
у меня не работало в IE иlocation.href
работало (и оба работали в других браузерах). С тех пор я всегда просто использовалlocation.href
и никогда не было проблем снова. Я не могу вспомнить, какая версия IE была.источник
strict mode
Chrome будет выдавать исключение, если вы пытаетесь назначить непосредственно наlocation
тоже, поэтому я всегда используюlocation.href
Просто уточнить, вы не можете сделать
location.split('#')
,location
это объект, а не строка. Но вы можете сделать,location.href.split('#');
потому чтоlocation.href
это строка.источник
Однако нужно помнить одно различие.
Допустим, вы хотите создать какой-то URL, используя текущий URL. Следующий код фактически перенаправит вас, потому что это не вызов,
String.replace
аLocation.replace
:Работают следующие коды:
источник
С TypeScript используйте
window.location.href
какwindow.location
технически объект, содержащий:Установка
window.location
приведет к ошибке типа, в то время какwindow.location.href
имеет тип строки.Источник
источник