【问题标题】:How Can One Javascript Enclosure Internal Function Call Another Internal Function一个 Javascript Enclosure 内部函数如何调用另一个内部函数
【发布时间】:2013-08-13 04:11:26
【问题描述】:

func2 如何在同一个 Javascript 封装内调用 func1?这甚至可能吗?

var x = (function() {

    return {
        func1: function func1() {},
        func2: function func2() {
            var y = func1();  // Doesn't work! What does?
        }
    }

}());

【问题讨论】:

  • return 语句之前创建func1,然后引用它(在您返回的对象字面量初始化中和func2 内部)

标签: javascript function oop call internal


【解决方案1】:

在返回之前定义func1,然后将func1 的引用分配为返回对象的属性。

var x = (function() {
    function func1() {}

    return {
        func1: func1,
        func2: function func2() {
            var y = func1();
        }
    }

}());

【讨论】:

  • 我可以知道代码是什么意思吗? X 是一个函数,它返回一个包含两个函数的对象?
  • @rps:是的,x 是一个包含func1func2 的对象。 (function(){...}()) 是一个立即调用的函数表达式,它返回该对象。
  • 这样获取对象而不是直接赋值的目的是什么?
  • 它允许代码在返回对象之前在匿名函数的范围内运行,但返回的对象仍然可以根据需要引用那些“私有”资源。人们有时使用这种模式来模拟私人和公共成员。在返回对象之前在函数体中定义的任何东西都是私有成员,作为返回对象的参数返回的任何东西都是公共的。
  • 谢谢特雷弗。这正是我最终所做的,在返回文字之前将引用函数设为私有。谢谢!!
【解决方案2】:
var x = (function() {

return {
    func1: function func1() {},
    func2: function func2() {
        var y = this.func1();
    }
}

}());

也许您正在寻找类似的东西?

【讨论】:

    猜你喜欢
    • 2014-01-01
    • 2011-05-30
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多