繁体   English   中英

JAVASCRIPT:我如何从外部访问这些 javascript 成员函数?

[英]JAVASCRIPT: How do i access these javascript member functions from outside?

我知道如何访问下面的成员 function 当它这样写时:

var blady_blah=
{
    some_member_function: function ()
    {
    }

}

我从外部访问它blady_blah.some_member_function()

但是当它这样写时,我如何访问成员 function:

(function() {

    some_member_function: function ()
    {
    }

})();

大括号 { } 用于定义 object 文字和 function 主体。 区别在于:

var name = {};    // Object literal

您可能还会看到写成

var name = {

};

那是一样的,但中间有一些空格,所以它仍然是 object 文字,不幸的是它看起来非常类似于:

var name = function () {    // Function body

};

object 可以有成员:

var name = {
  member: "string"
};

而 function 不能; function 有声明:

var name = function () {
  do_something();
  var result = do_something_else();
};

你不能写

var name = function () {
  member: "string"
};

因为您将 { } 的两种用法混合在一起。

可以在ZC1C425268E68385D1AB5074C174F14Z中定义变量,但是在ZC1C42525268E683851AB55074C1717A94F14BES之外看不到它,它在ZC1C11C425268EMEN中。

var name = function () {
  var something_useful = string;
};

第二个例子是一个闭包(它只是碰巧在里面有一个语法错误)。 减去不好的语法,您的自我评估匿名 function 看起来像这样:

(function() {
})();

如果您愿意,您可以在其中定义外部世界不可见的函数。 如果您对维护一个干净的全局命名空间感兴趣,例如使用库代码,这将非常有用。

(function() {
  function utilityFunctionFoo() {
  }

  function utilityFunctionBar() {
  }
})();

当然,如果你想从外界调用这些函数中的任何一个,那你就不走运了。 还是你? 实际上,还有另一种定义 function 的方法:

var foo = function() {
}

这与写作完全相同:

function foo() {
}

...除了以第二种样式编写时,您实际上可以省略var关键字并创建一个全局变量:将它们放在一起:

(function() {
  publicData = "stuff accessible from outside anonymous function";
  var privateData = "stuff that stays inside anonymous function";

  function utilityFunctionFoo() {
  }

  function utilityFunctionBar() {
  }


  usefulFunctionExport = function() {
    utilityFunctionFoo();
    utilityFunctionBar();
  }
})();

usefulFunctionExport();

在 function 终止后,您将无法访问它。 它是一个局部变量,当它的父 function 结束时,它会从 scope 结束。

您应该使主 function 成为构造函数,以便它返回 class 的新实例(您可以将其命名为 Blahdy_blah),其中成员 ZC1C425268E68385D1AB5074C17A94F14 是其属性之一。

查找构造函数、它们的返回值和访问成员变量。

如果你想执行 function,你需要返回一个 object,它会暴露 function。

var LIB = (function() {

    var fn = {
        member_function : function(){}
    };

    return fn;


})();

并打电话

LIB.member_function();
(function() {

    blady_blah.some_member_function();

})();

如果你需要往里面添加东西,你可以这样写。

(function() {

    blady_blah.some_member_function(function(){

        // Do stuff...

    });

})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM