Подтвердить что ты не робот

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

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

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

против

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

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

4b9b3361

Ответ 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.

Источник