호스트 환경
에서 제공하는 전역 개체/함수(예: window, Alert, setTimeout, document, location 등)는 대부분의 브라우저에서 다시 쓰기를 제한합니다.
window = 55; alert(window);
이 문장은 IE에서 오류를 발생시켜 불법 복제를 유발합니다. , 팝업이 이어집니다. 상자가 실행되지 않습니다. window=55가 존재하지 않는 경우에도 다른 브라우저는 계속해서 창을 표시합니다.
알림 다시 작성
alert = 55; console.log(alert);
오류가 발생하면 Firefox/Chrome/Safari/Opera가 다시 작성되었으며 해당 콘솔에서 55의 출력을 볼 수 있습니다. 일부 브라우저는 호스트 환경에서 제공하는 전역 개체/함수의 재작성을 지원하지 않는 반면 다른 브라우저는 지원하는 것을 볼 수 있습니다.
다음은 전역 변수를 선언하는 두 가지 방법입니다.
a1 = 11; var a2 = 22; for(a in window){ if(a=='a1'||a=='a2'){ alert(a) } }
위 코드는 IE에서 정보 상자를 팝업하지 않습니다. IE에서 내부 내용은 다음과 같습니다.
//IE with(host_object){//window with(global_object){//Global a1 = 11; var a2 = 22; } }
즉, a1과 a2가 첫 번째로 언급되는 방법입니다. 위의 JS 엔진 속성은 두 번째 호스팅 환경에서 제공하는 창 개체의 속성이 아닌 전역 개체의 속성에서 제공됩니다. 따라서 IE의 window에서는 a1과 a2가 존재하지 않습니다. IE가 Global 개체에 대한 참조를 제공하는 경우 다음 코드가 정보 상자를 표시할 수 있습니다.
for(a in Global){ if(a=='a1'||a=='a2'){ alert(a) } }
Firefox/Safari/Chrome/Opera의 내부는 아마도 다음과 같을 겁니다
//Firefox/Safari/Chrome/Opera with(host_object){//window a1 = 11; var a2 = 22; with(global_object){//Global } }
즉, a1과 a2는 위에서 언급한 두 번째 속성인 호스트 환경에서 제공하는 전역 개체 창입니다. 따라서 in window의 경우 a1과 a2가 모두 존재하며 정보 상자가 나타납니다.
전역 변수 window.a3 = 33을 선언하는 타사 방법을 살펴보겠습니다. 이는 a3이 창의 속성으로 창에 걸려 있으므로 모든 브라우저에서 for in window일 때 a3을 얻을 수 있음을 보여줍니다.
위 내용은 다양한 브라우저 환경에서 제공되는 JavaScript 전역 객체/함수 인스턴스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!