如何使用Javascript访问内部函数?

时间:2016-04-21 06:15:53

标签: javascript

我无法访问功能b()。如何在外面调用函数b()?

function a() {
    function b() {
        alert("I am in b function");
    }
}

3 个答案:

答案 0 :(得分:1)

除非您修改a以使ba之外可用,否则不能这样做。就目前而言,b完全属于a

a有很多方法可以让b在其自身之外可用:

  1. 退货
  2. 在其中一个属性
  3. 上返回一个b的对象
  4. 将其分配给变量a关闭
  5. 将其分配给由变量a引用的对象上的属性关闭
  6. ...但现在a,您无法访问b

    以下是上述例子:

    1 - 将其退回

    function a() {
        return function b() {
            alert("I am in b function");
        };
    }
    var x = a();
    x();
    

    2 - 返回一个b作为属性的对象:

    function a() {
        return {
            foo: function b() {
                alert("I am in b function");
            }
        };
    }
    var x = a();
    x.foo();
    

    3 - 将其分配给变量a关闭

    var x;
    function a() {
        x = function b() {
            alert("I am in b function");
        };
    }
    x();
    

    4 - 将其分配给变量引用的对象的属性a关闭

    var x = {};
    function a() {
        x.foo = function b() {
            alert("I am in b function");
        };
    }
    x.foo();
    

答案 1 :(得分:0)

你不能做下面的事吗

function a() {
b();
}


 function b() {
    alert("I am in b function");
 }

答案 2 :(得分:0)

按照@ ArunPJohny的评论,您可以这样做:

var a = (function a() {
    function b() {
        alert("I am in b function");
    }
  return {
    b: b
  }
})();

a.b();

以上称为revealing module pattern