2010-12-07 2 views
0

나는 (예를 들어) 원래의 함수가있는 경우 :익명 자기 호출하는 자바 스크립트 함수를 - 반환 여러 개체

var x = function() { alert('tadaaa'); return 1; } 
var y = function() { alert('tadaaa'); return 1; } 

난으로 앞서 갔다와 자기 호출하는 익명 JS 기능에이를했습니다 그러한 :

(function() { 
    var x = function() { alert('tadaaa'); return 1; } 
    var y = function() { alert('tadaaa'); return 1; } 
})() 

나는 역설적 인 무엇인가? 나는 x와 y를 전역 변수로 접근하고 싶다. 그러나 self-invoking 익명 함수는 다른 영역에서 유용하다. 지금은 자세히 다루지 않을 것이다. 나는 단지 그것을 유지하려고한다.

var x= (function() { 
     var x = function() { alert('tadaaa'); return 1; } 
     var y = function() { alert('tadaaa'); return 1; } 
     // Should I be doing something like 
     return x 
    })() 

또는

var x= (function() { 
     var x = function() { alert('tadaaa'); return 1; } 
     return x 
    })() 

    var y = (function() { 
     var x = function() { alert('tadaaa'); return 1; } 
     return y 
    })() 

다소 중복 보인다

내가 좋아하는 일을해야 하는가?

+0

난 당신이 x'와'y''의 로컬 인스턴스를 생성되며, 그래서 전 세계적으로 이러한 액세스 할 수 없습니다 생각합니다. 'var'을 놓치면 전역 변수가 생성됩니다. 그러나 나는 왜 당신이 문맥을 보지 않고 이것을하고 싶어하는지 확신하지 못한다. –

답변

3

나는 등의 목적이 무엇인지 모르겠지만, 어쩌면 당신은 같은 객체의 기능을 모두 반환 할 수 :

var funcs = (function() { 
    var x = function() { alert('tadaaa'); return 1; }; 
    var y = function() { alert('tadaaa'); return 1; }; 
    return {x: x, y: y}; 
})(); 

funcs.x(); 
funcs.y(); 

이것은 모듈 패턴은 약 (에 대한 참조 무엇 기본적으로 예 : http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth).

괜찮습니다! 물론 필요한 것에 따라. 당신이 할 수있는

1

: 두 번째 코드 조각에서

var x, y; 
(function() { 
    x = function() { alert('tadaaa'); return 1; } 
    y = function() { alert('tadaaa'); return 1; } 
})(); 
관련 문제