2011-02-02 64 views
0

让我们说这是我的代码Javascript面向对象:如何遍历对象内的函数?

var myObject = { 

    varA: true, 
    varB: false, 

    init: function() { 

     //do something 
    }, 


    doThis: function() { 

     //do this 

     function doThat(){ 

      //do that 

     } 

    } 

} 

我如何调用(如果我能)功能doThat()从“外部”的对象(如从页面上的onclick)?可能吗?

我工作/黑客一个代码留下了一个潜在的开发人员,我不想重写所有从srcatch,所以任何良好的解决方法是很好的接受!谢谢

回答

1

你不能。

函数doThat不会暴露给任何外部作用域。除非您以某种方式更改doThis以返回对doThat的引用,否则除了在其他位置声明该函数外,无法调用它。

1

没有修改myObject没有办法做到这一点; doThat实际上是一个私人功能。有几种方法可以解决此问题,例如使doThat属于doThis。这不建议,但你确实说你是黑客。

0

你不能。 doThat不是doThismyObject的财产。您将不得不修改代码以暴露封闭的doThat函数。

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

以上将让你做的事:

myObj.doThis()(); // "doing this"/"doing that"