2010-12-28 4 views
3

일부 변수를 호출 할 때 window.을 사용하는 사람들이 많이 있습니다. 그러나 동일한 윈도우의 모든 변수가 실제로 window에있는 것은 아닙니다.
예 :창 개체 사용

window.onorientationchange = function() { 
    var orientation = window.orientation; // <-- WHY? 
    switch(orientation) { 
    /* ... */ 
    } 
} 

그러나 같은 사람들이 사용 alert(), document 등 왜?

답변

2

특정 시간에 특정 함수/변수 만 window의 명시적인 속성으로 표시하려고합니다.

(function() { 
    var jQuery = function(selector) { alert(selector) } 
})(); 

jQuery // not defined 

우리는 그것이로 변경하는 경우 :
(function() { 
    var jQuery = function(selector) { alert(selector) } 
    window.jQuery = jQuery; 
})(); 

은 우리가 명시 적으로 개인 공간으로부터 "노출".

그렇습니다. 과 같은 메소드를 호출하기 위해 명시 적으로 window.을 선언 할 필요는 없지만 모든 사람은 자신 만의 코딩 스타일을 가지고 있으며 누구나 자신의 진술이 얼마나 명시해야하는지 자신의 정도를가집니다.

어떤 사람들은 혼란을 피하기 위해 alert과 같은 전역 메서드에 window.을 명시 적으로 접두사로 붙입니다. ...의 당신은 예를 들어, alert 선정됐다 개인 네임 스페이스에서 함수를 정의한다고 가정 해 봅시다

(function() { 
    function alert() {} 
    alert('lol'); // does nothing 
    window.alert('lol') // does something 
})(); 

우리가 정확히 같은과 기능을 정의하기 때문에 우리는 우리의 경고를해야 할 그 개인 공간의 내부 alert을 사용할 수 없습니다 이름. 이 문제를 해결하려면 명시 적으로 window.alert 메서드를 참조해야합니다.

그러나 일반적으로 개인 네임 스페이스의 내용을 전역 네임 스페이스에 노출시키지 않는 한 window.으로 접두어를 붙이지 않아도됩니다. 따라서 코드에있는 documentalert 등을 사용하십시오.

0

많은 자바 스크립트 튜토리얼에서 alert(), document() 등은 정규화 된 window 객체없이 사용되며 나는 그 코드를 반복한다고 생각합니다.