2011-05-13 4 views
0

다음 작업을 수행하는 것이 좋습니다.전역 이름 공간 (객체 리터럴)에 전역 단축키 변수를 할당하는 것은 나쁜 습관입니까?

기본 함수 및 변수를 포함하기 위해 사용하는 전역 개체 리터럴 또는 네임 스페이스가 있습니다.

여기에는 특정 페이지에 대한 모든 변수와 기능을 포함하는 Page 속성이 있습니다. 또한 Page 속성 내의 속성에 요소 ID에 대한 참조가 포함되어 있습니다. 이것은 .NET 생성 클라이언트 ID를 저장해야하는 ASP.NET 사이트를 가지고 있기 때문에 jQuery로 참조 할 수 있습니다.

Base 
    Base.Page 
     Base.Page.Elements 

내 문제 나 자신이 다음과 같은 내 페이지 기능 내에서 이러한 리터럴에 "바로 가기"변수에 할당 찾을 것을 :

Base.Page.DoThisStuff = function() { 
    var p = Base.Page; 
    var pe = Base.Page.Elements; 

    //Function Stuff Here 

    p = null; 
    pe = null; 
} 

내 질문은 것은 : 그것은 더 나은 아이디어가 생성하는 것입니다을 var _p = Base.Page;과 같은 내 마스터 페이지의 '전역'변수이거나이 끔찍하고 나쁜 습관이며 위와 같이 계속해야합니까?

는 (내 네임 스페이스는 상기와 같은 짧은 이름을 가지고 있지 않습니다 - 그들은 단지 설명을위한

나는 그들이 직접이 질문에 관련이 있다고 생각하지 않기 때문에 내가 ASP.NET 또는 jQuery를 태그하지 않았습니다..)

답변

2

이것은 실제로 프로그래밍 스타일의 문제로 보입니다. 각 대답은 다양합니다.

나는 내 변수를 가능한 한 범위가 작게 유지하므로 전역 변수 바로 가기 아이디어 대신 위의 솔루션을 선호합니다.

0

일반적으로 전역의 "발자국"을 제한하는 것이 좋습니다. 주로 일부 전역의 일부를 재정의하는 것을 피하기 위해서입니다. 나는 식별자가 더 간단할수록, 다른 사람이 그것을 사용할 가능성이 가장 높다고 말할 것이다.

내가 extjs에서 보았던 점과 좋은 타협이라고 생각하는 이유는 Ext 네임 스페이스 바로 아래에 속기를 정의하기 때문입니다. 예를 들어 Ext.getCmp 메소드가있는 구성 요소를 얻으십시오. 올바르게 호출 한 경우 Ext.ComponentMgr.get에 대한 바로 가기입니다.

페이지 요소에 대한 액세스가 필요한 경우 Base.Page를 사용하고 Base.pe는 유지해야합니다.

관련 문제