[英]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.