DrS*_*ove 8 javascript function
(function(){
var a = function () {
alert("hey now!! ");
};
return {"hi":function(){return a;}};
})();
hi();
Run Code Online (Sandbox Code Playgroud)
这段代码不起作用.我如何公开一个函数?
自调用函数返回具有该属性的对象hi
,此对象不会添加到全局范围,以便您可以直接使用该属性.将函数的结果放在变量中:
var o =
(function(){
var a = function (){
alert("hey now!! ");
};
return {"hi":function(){return a;}};
})();
Run Code Online (Sandbox Code Playgroud)
使用该属性调用该函数只会返回变量中包含的函数a
,因此您必须从函数调用返回值来调用包含警报的函数:
o.hi()();
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/Guffa/9twaH/
有两种基本方法:
var MyNameSpace = (function(){
function a (){
alert("hey now!! ");
};
return {a: a};
})();
MyNameSpace.a();
Run Code Online (Sandbox Code Playgroud)
要么
(function(){
function a (){
alert("hey now!! ");
};
MyNameSpace = {a: a};
})();
MyNameSpace.a();
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二种方式,因为它看起来更干净
它被称为"暴露模块模式"btw,你可以阅读更好地理解它:)
https://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript