Javascript面向对象:如何在对象内遍历函数?

时间:2011-02-02 16:16:43

标签: javascript oop

让我们说这是我的代码

var myObject = {

    varA: true,
    varB: false,

    init: function() {

        //do something
    },


    doThis: function() {

        //do this

        function doThat(){

           //do that   

        }

    }

}

如何从对象的“外部”调用(如果可以)调用函数doThat()(例如从页面上的onclick)?有可能吗?

我正在工作/黑客攻击由一名前任开发人员留下的一段代码,我不想重写srcatch中的所有内容,因此任何好的解决方法都被广泛接受!感谢

3 个答案:

答案 0 :(得分:1)

你做不到。

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

答案 1 :(得分:1)

如果不修改myObject,就无法做到这一点; doThat实际上是一个私人功能。有几种方法可以解决此问题,例如,使doThat成为doThis的属性。不推荐这样做,但你确实说你是黑客攻击。

答案 2 :(得分: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"