>  기사  >  웹 프론트엔드  >  다양한 브라우저 환경에서 제공되는 JavaScript 전역 객체/함수 인스턴스에 대한 자세한 설명

다양한 브라우저 환경에서 제공되는 JavaScript 전역 객체/함수 인스턴스에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-27 16:54:211533검색

호스트 환경

에서 제공하는 전역 개체/함수(예: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.