2013-03-16 1 views
1

하나의 전역 이름 공간을 사용하여 다양한 도구를 만들 때 도구의 메서드에서 네임 스페이스 개체의 속성이나 메서드에 액세스하려면 어떻게해야합니까?하나의 전역 네임 스페이스를 사용하여 도구의 메서드에서 네임 스페이스의 속성/메서드에 액세스하는 방법?

OT "우리 도구"를 이름 공간으로 지정하십시오. 그것은 것으로 보인다

OT.GridInterface = function(){ 
    // A Grid tool 
    this.DoSomething(); 
} 
OT.GridInterface.prototype = new OT.BaseInterface(); 


OT.GridInterface.prototype.DoSomething = function(){ 
    console.log(Turkey); // undefined 
    console.log(OT.Turkey); // undefined with Closure, works with Obj Literal* 
    console.log(this.Turkey); // undefined 
} 

// * This goes around the outside to get the property publicly rather than up through the inside. 

:

우리가 할 수있는 : OT 객체 등의

var OT = function(){ // Closure 
    var Turkey = 'Im a Turkey!'; 
    return this; 
}(); 

또는

var OT = { // Object Literal 
    Turkey:'Im a Turkey!' 
}; 

을 각각의 경우에, 우리는 우리의 도구를 추가 기술적으로 각각의 도구는의 방법입니다. 내부 함수가 외부 함수의 속성에 액세스 할 수 있어야하기 때문에및 해당 메서드의 메서드는 Turkey 네임 스페이스 속성에 액세스 할 수 있어야합니다?

내 목표는 OT에있는 모든 유틸리티 도구를 사용하여 OT의 공유 유틸리티 변수를 사용할 수 있다는 것입니다. 이상적으로는, 이러한 도구와 속성은 도구에서 읽을 수 있거나 사용할 수 있어야하지만 도구로는 변경할 수 없어야합니다.

답변

0

here은 자바 스크립트의 비공개 회원에 대해 자세히 설명합니다.

기본적으로 묻는 것은 불가능합니다.

모든 기능을 클로저에 정의해야하거나 Turkey을 공개해야합니다.