2011-02-02 3 views
0

이의 말을하자이Javascript Object Oriented : 객체 내부에서 함수를 트래버스하는 방법?

var myObject = { 

    varA: true, 
    varB: false, 

    init: function() { 

     //do something 
    }, 


    doThis: function() { 

     //do this 

     function doThat(){ 

      //do that 

     } 

    } 

} 

는 어떻게 부릅니까 내 코드입니다 (만약 내가 할 수있는) "외부"개체에서 (페이지에 온 클릭에서 같은) 기능 doThat()? 그것은 가능한가?

나는 사전 개발자가 남긴 코드 조각을 해킹하고 있는데, 나는 srcatch에서 모든 것을 다시 쓰고 싶지 않다. 따라서 좋은 해결 방법이 잘 받아 들여진다. 감사합니다

답변

1

수 없습니다.

기능 doThat은 외부 범위에 노출되지 않습니다. 어떤 식 으로든 doThis을 변경하여 doThat에 대한 참조를 반환하지 않는 한, 다른 곳에서 함수를 선언하는 것 외에는 호출 할 방법이 없습니다.

1

수정할 필요없이 수정할 수 없습니다. myObject; doThat은 실질적으로 전용 기능입니다. 이 문제를 해결할 수있는 방법은 여러 가지가 있습니다. 예를 들어 doThat의 속성을 doThis으로 지정합니다. 권장하지는 않지만 으로 해킹을 당했다고합니다.

0

수 없습니다. doThatdoThis 또는 myObject의 속성이 아닙니다. 동봉 된 doThat 기능을 노출하려면 코드를 수정해야합니다.

var myObj = { 
    doThis: function() { 
    console.log("doing this"); 
    return function doThat() { console.log("doing that"); }; 
    } 
}; 

위의 당신이해야 할 것 :

myObj.doThis()(); // "doing this"/"doing that" 
관련 문제