Javascript: настройка location.href в зависимости от местоположения

Когда бы вы установили location на строку URL в сравнении с настройкой location.href?

location = "http://www.stackru.com";

против

location.href = "http://www.stackru.com";

Справочник по сети разработчиков Mozilla

8 ответов

Решение

Вы могли бы установить location непосредственно, потому что это немного короче. Если вы хотите быть кратким, вы можете опустить window. тоже.

URL назначения для обоих location.href а также location определены для работы в JavaScript 1.0, обратно в Netscape 2, и с тех пор были реализованы в каждом браузере. Так что выбирайте и используйте то, что вы найдете наиболее ясным.

Даже если оба работают, я бы использовал последний.locationявляется объектом, и назначение строки объекту не сулит ничего хорошего для удобства чтения или обслуживания.

Вроде как уже было сказано, location это объект. Но этот человек предложил использовать либо. Но вы будете лучше использовать .href версия.

Объекты имеют свойства по умолчанию, которые, если ничего не указано, они предполагаются. В случае с location объект, он имеет свойство под названием .href , И, не указав ЛЮБОЕ свойство во время присваивания, он примет "href" по умолчанию.

Это все хорошо, пока не изменится более поздняя версия объектной модели и не будет больше свойства по умолчанию или свойства по умолчанию. Тогда ваша программа неожиданно обрывается.

Если ты имеешь ввиду href, вы должны указать href,

Пару лет назад, location у меня не сработало в IE и location.href сделал (и оба работали в других браузерах). С тех пор я всегда просто использовал location.href и никогда не было проблем снова. Я не могу вспомнить, какая версия IE была.

Однако нужно помнить одно различие.

Допустим, вы хотите создать какой-то URL, используя текущий URL. Следующий код фактически перенаправит вас, потому что он не вызывает String.replace но Location.replace:

nextUrl = window.location.replace('/step1', '/step2');

Работают следующие коды:

// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');

// href property
nextUrl = window.location.href.replace('/step1', '/step2');

Просто чтобы уточнить, вы не можете сделать location.split('#'), location это объект, а не строка. Но вы можете сделать location.href.split('#'); так как location.href это строка

С использованием TypeScript window.location.href как window.location технически объект, содержащий:

Properties
hash 
host 
hostname
href    <--- you need this
pathname (relative to the host)
port 
protocol 
search 

Настройка window.location выдаст ошибку типа, аwindow.location.href имеет строковый тип.

Источник

Использовать global.location.href вместо этого, работая с React.

Другие вопросы по тегам