Javascript: настройка location.href по сравнению с местоположением
Когда вы установили бы location
в строку URL-адреса по сравнению с установкой location.href
?
location = "http://www.stackoverflow.com";
против
location.href = "http://www.stackoverflow.com";
Справочник сообщества разработчиков Mozilla
Ответы
Ответ 1
Вы можете установить location
напрямую, потому что он немного короче. Если вы пытаетесь быть краткими, вы обычно можете опустить window.
.
Назначения URL как для location.href
, так и location
определены для работы в JavaScript 1.0, обратно в Netscape 2 и реализованы в каждом браузере с тех пор. Поэтому возьмите свой выбор и используйте то, что вы найдете наиболее ясным.
Ответ 2
Даже если обе работают, я бы использовал последнее.
location
- это объект, и назначение строки объекту не является хорошим предзнаменованием для удобства чтения или обслуживания.
Ответ 3
Как уже было сказано, location
является объектом. Но этот человек предложил использовать либо. Но вам лучше использовать версию .href
.
Объекты имеют свойства по умолчанию, которые, если ничего не указано, считаются. В случае объекта location
он имеет свойство, называемое .href
. И, не указывая свойства ANY во время назначения, он будет принимать значение "href" по умолчанию.
Все это хорошо и хорошо до тех пор, пока не будет изменена версия более поздней версии объектной модели, и она либо больше не является свойством по умолчанию, либо изменено свойство по умолчанию. Затем ваша программа неожиданно прерывается.
Если вы имеете в виду href
, вы должны указать href
.
Ответ 4
Несколько лет назад location
не работал у меня в IE и location.href
(и оба работали в других браузерах). С тех пор я всегда использовал location.href
и больше никогда не беспокоился. Я не могу вспомнить, какая версия IE была.
Ответ 5
Чтобы уточнить, вы не можете сделать location.split('#')
, location
- это объект, а не строка. Но вы можете сделать location.href.split('#');
, потому что location.href
- это строка.
Ответ 6
Однако нужно помнить об одном различии.
Допустим, вы хотите создать какой-то 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');
Ответ 7
С использованием 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
имеет тип string.
Источник