당신은 설정 할 때 location
설정 대 URL 문자열 location.href
?
location = "http://www.stackoverflow.com";
vs
location.href = "http://www.stackoverflow.com";
답변
location
약간 짧아서 직접 설정할 수 있습니다 . 간결 해 지려고한다면 보통 window.
너무 생략 해도됩니다.
모두 URL 할당 location.href
하고 location
다시 넷스케이프 2, 자바 스크립트 1.0 일에 정의되어, 이후 모든 브라우저에서 구현되고있다. 따라서 선택하고 가장 명확한 것을 사용하십시오.
답변
두 가지 모두 작동하더라도 후자를 사용합니다.
location
는 객체이며 문자열을 객체에 할당해도 가독성이나 유지 관리에 적합하지 않습니다.
답변
이미 말했듯이 입니다. location
객체그러나 그 사람은 둘 중 하나를 사용하도록 제안했습니다. 그러나 .href
버전 을 사용하는 것이 좋습니다 .
객체에는 다른 속성이 지정되지 않은 경우 기본 속성이 있습니다. location
객체 의 경우 라는 속성이 .href
있습니다. 그리고 할당하는 동안 ANY 속성을 지정하지 않으면 기본적으로 “href”로 간주됩니다.
이후의 객체 모델 버전이 변경되고 더 이상 기본 속성이 없거나 기본 속성이 변경 될 때까지이 모든 것이 정상입니다. 그러면 프로그램이 예기치 않게 중단됩니다.
의미 href
하는 경우을 지정해야 href
합니다.
답변
몇 년 전 location
IE에서 저에게 location.href
효과가 없었으며 다른 브라우저에서도 효과가있었습니다. 그 이후로 나는 항상 방금 사용 location.href
했으며 다시는 문제가 없었습니다. 어떤 버전의 IE인지 기억할 수 없습니다.
답변
그냥 명확히하기 위해 당신이 할 수없는 location.split('#')
, location
객체가 아닌 문자열입니다. 그러나 문자열 location.href.split('#');
이기 때문에 할 수 있습니다 location.href
.
답변
그러나 명심해야 할 한 가지 차이점입니다.
현재 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');
답변
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
합니다.