2010-02-02 6 views
0

이 코드가 포함 된 빈 .js 파일이 있습니다.자바 스크립트 : 클로저 도움말

Cart.CheckoutNow = { 
... 
} 

// Alias 

if (typeof(CheckoutNow) === 'undefined') { 
    CheckoutNow = Cart.CheckoutNow; 
} 
else { 
    alert('CheckoutNow is already a variable in window.'); 
} 

// Alias 코드를 페이지 상단에 어떻게 표시 할 수 있습니까?하지만 Cart.CheckoutNow가 선언 된 후에 실행해야합니까?

이 작동하지만 아래쪽에 alert() 호출해야 할 마음에 안 :

alias = function() { 
if (typeof(CheckoutNow) === 'undefined') { 
    CheckoutNow = Cart.CheckoutNow; 
} 
else { 
    alert('CheckoutNow is already a variable in window.'); 
} 
}; 

Cart.CheckoutNow = { 
... 
}; 

alias(); 
+0

, 당신은 (대해서 typeof CheckoutNow 경우 ==='원하는 'undefined')''CheckoutNow'를 중괄호없이 사용합니다. – psychotik

+0

btw, 엄격한 비교가 필요없고, typeof는 항상 문자열을 반환합니다. – Alsciende

+0

질문은 실제로 자바 스크립트 클로저와 관련이없는 것으로 보입니다. – Alsciende

답변

0

당신은 함수에 별칭을 정의하고 몸의 온로드 이벤트를 호출해야합니다.

1

나는 당신이 일을하고 싶은이 정말 모르겠어요,하지만 당신은 확실 있다면, 당신이 원하는 것은 :

window.setTimeout(function(){ 

    // Alias 
    if (typeof CheckoutNow === 'undefined') { 
    CheckoutNow = Cart.CheckoutNow; 
    } 
    else { 
    alert('CheckoutNow is already a variable in window.'); 
    } 

},0); 

Cart.CheckoutNow = { 
    ... 
} 
1

당신이하려는 이유에 대한 설명없이 더 나은 코드 구성을위한 것이라고 생각합니다. 그런 경우, I가 이것의 라인을 따라 여러 개의 파일 뭔가에 자바 스크립트를 나눌 것이며,이 순서대로 페이지에 포함 : Btw는

// namespace.js 
if (typeof Cart === 'undefined') { 
    Cart = {}; 
} 

// checkoutnow.js 
Cart.CheckoutNow = { 
    // module code here 
} 

// alias.js 
alias = function() { 
    // alias code here 
} 

// domready.js 
onDocumentReadyFunction() { 
    alias(); 
} 
관련 문제