2015-01-19 2 views
0

저는 JS에 매우 익숙하며 여기에 의심의 여지가 있습니다. 그래서 이렇게, window 통해 액세스윈도우 객체에 모든 함수를 바인딩하는 용도는 무엇입니까?

function test(a) {} 

: :이 같은 함수가 있다고 가정하자

window.test 

나는 함수를 호출 할 수 있습니다. 하지만 모든 기능을 window 개체에 바인딩하는 목적은 무엇입니까? 이점이 있습니까? 이 window 객체가

  1. 을 생성 얻을 :

    내가 몇 가지 질문이? 페이지 당입니까?

  2. 바인딩 할 수없는 함수가 있습니까 window
  3. window도 개인 변수, 함수에 액세스 할 수 있습니까?

미리 감사드립니다.

답변

1

window 개체는 브라우저 창 (1)입니다. 아니면 요즘 탭. 그것은 브라우저에 의해 설정된 시스템 객체입니다. global scope에서 작성된 모든 함수 및 표현식은 창 오브젝트 (2)에 바인드됩니다. 자바 스크립트는 c 또는 자바과 같은 개인 변수를 만들 수 없습니다. 그러나 값이 closure이면 window 객체 (3)를 통해 값에 액세스 할 수 없습니다.

클로저 : 해당 기능을 가진 기능입니다.

var createClosure = function() { 
    var a = 0; 
    return function() { 
    a++; 
    return a; 
    }; 
}; 

var a = createClosure(); 
a(); //displays 1 
a(); //displays 2 

지금이 a 년대있다 : 클로저는이 코드를 고려 기능

에 개인 변수의 사용에만 사용할 수 있습니다. 하나의 acreateClosure()에 의해서만 액세스 할 수있는 전용 변수이고 다른 하나는 window 개체 (전역 적으로 액세스 가능)의 속성이며 createClosure에 반환 된 함수에 대한 참조입니다. 처음으로 a에 액세스 할 수는 없습니다.

함수 내에서 변수를 정의 할 때 var 키워드를 사용해야합니다. 그렇지 않으면 그들은 세계화됩니다.

+0

따라서 ***는 함수 영역에 전용 ** *이다. 따라서 생성자가 만든 Object 멤버는 private입니다. 그리고 prototypal * Object-Oriented 언어 덕분에 더욱 흥미 진진합니다. –

+0

@ RokoC.Buljan 당신은 생성자에 대해 절대적으로 옳습니다. 나에게 상기시켜 줘서 고마워 .-) – Mouser

0

모든 변수 또는 함수는 창 "keyword"로 액세스 할 수 있습니다. 왜냐하면 창은 javascript의 전역 변수이기 때문입니다.

  1. 창 개체는 창을 나타냅니다.
  2. Nope. 창을 사용하거나 사용하지 않는 모든 함수를 호출 할 수 있습니다 (범위가있는 경우 창 없음).
  3. 어떻게 JavaScript에서 개인 변수를 만드나요? 'new'키워드를 사용하여 변수에 저장된 함수에 대해 이야기하고 있다면, 아니요, 창 객체는 '개인'변수에 액세스 할 수 없습니다.
1

창은 그렇게 나쁘지 간주 전역 변수를 추가 일반적으로

var something = 'hi'; 
// or 
window.something = 'hi'; 
// product the same result. 

을하고, 전역 범위이며, 사용자가 만든 전역의 수는 그래서 당신은 개체/모듈을 만들 폐쇄를 사용해야합니다 최소한으로 유지. 즉 위의 예에서

var myModule = (function() { 

    var something; // private, only accessable in this function 

    return { 
    someOtherThing : 'some value'; 
    // public, accessed with myModule.someOtherThing 
    } 

})(); 

만 window.myModule 글로벌 내부 변수/함수 될 것이라고하지

관련 문제