Javascript: настройка location.href в зависимости от местоположения - PullRequest
288 голосов
/ 05 марта 2010

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

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

против

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

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

Ответы [ 6 ]

243 голосов
/ 05 марта 2010

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

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

147 голосов
/ 05 марта 2010

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

66 голосов
/ 04 апреля 2012

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

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

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

Если вы имеете в виду href, вам следует указать href.

20 голосов
/ 27 декабря 2012

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

15 голосов
/ 05 декабря 2015

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

Допустим, вы хотите создать какой-то 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');
15 голосов
/ 07 мая 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...