【问题标题】:How to call a javascript function inside another function如何在另一个函数中调用 javascript 函数
【发布时间】:2015-07-13 13:38:27
【问题描述】:

我有这样的事情:

var yourNamespace = {

    foo: function() {
        .....
    },

    bar: function() {
        function foobar() {....
        }
    }
};

有没有可能在foo里面调用bar里面的foobar函数?

【问题讨论】:

  • 没有。名为“foobar”的函数是分配给“bar”属性的函数的本地函数。除非“bar”外部函数中的其他代码以某种方式暴露了“foobar”函数,否则它是私有的,不能从“bar”外部访问。
  • 简短的回答是否定的。但是,如果您稍微解释一下您要达到的目标,我们也许可以给您一些好的建议。

标签: javascript


【解决方案1】:

根据你的确切结构,你不能但是你可以做这样的事情:

var yourNamespace = {
   foo: function() {
        ..... 
        yourNamespace.foobar()
    },
    bar: function() {
       function foobar() {....}
       yourNamespace.foobar = foobar;
    }
};

或者更好,(IMO):

var yourNamespace = {
   foo: function() {
        ..... 
        yourNamespace.bar.foobar()
    },
    bar: function() {
       yourNamespace.bar.foobar =  function() {....}

    }
};

请注意:在这两种情况下,bar() 必须在foo() 之前运行,否则foobarundefined

【讨论】:

    【解决方案2】:

    这只是一个简单的模块模式。您应该做的是让 bar 成为自己的模块,并从该模块返回 foobar 。示例:

    var yourNamespace = {
    
        foo: function() {
            this.bar.foobar();
        },
    
        bar: {
            abc: '',
            foobar: function() {
                console.log('do something');
            }
        }
    };
    

    或者你可以做更多这样的事情:

    var yourNamespace = {
        foo: function() {
            var bar = this.bar();
        },
        bar: function() {
            var abc = '';
            function foobar() {
                console.log('return abc or do something else');
                return abc;
            }
            return {
                foobar: foobar
            }
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      相关资源
      最近更新 更多