2010-01-20 10 views
3

내부 개체 (t1)가 해당 컨테이너 개체에 액세스 할 수있는 방법이 있습니까? 다음 코드를 실행할 때내부 개체 액세스 컨테이너

var t = { 
       fnc1: function(){ 
        alert("fnc1"); 
       }, 
       t1: { 
        fnc2: function(){ 
         alert("fnc2"); 
        }, 
        fnc3: function(){ 
         this.fnc1(); 
        } 
       } 
      }; 
t.t1.fnc3(); 

제가 이것이 T1 개체가 아닌 t 객체를 참조하는 이후 '기능없는 this.fnc1'오류를 얻는다.

fnc1에 액세스 할 수있는 방법이 있습니까?

답변

2

물론이 같은 당신이 변수 덮어 쓰지 않는 :

t.fnc1() 

을 당신은 t.t1의 방법으로 fnc1()를 호출 call() 또는 apply()을 사용합니다.

0

Javascript를 순수 OO 언어로 사용하려고하면 종종 많은 좌절감을 느끼게됩니다.

대신 Javascript의 특정 기능인 주로 기능과 클로저를 사용할 수 있습니다.
예를 들어 변형을 만들었습니다.

var t = function(){ 
    var str = "fnc", 
     fnc1 = function(){ 
      alert(str + "1"); 
     }; 
    return { 
     fnc1:fnc1, 
     t1:{ 
      fnc2:function(){ 
       alert(str + "2"); 
      }, 
      fnc3:fnc1 
     } 
    }; 
}; 
t().t1.fnc3();