(function(){
var a = function() {
alert("hey now!! ");
};
return {"hi":function(){return a;}};
})();
hi();
此代码不起作用。我如何公开一个功能?我如何从匿名自调用函数公开函数?
(function(){
var a = function() {
alert("hey now!! ");
};
return {"hi":function(){return a;}};
})();
hi();
此代码不起作用。我如何公开一个功能?我如何从匿名自调用函数公开函数?
自调用函数返回一个对象与物业hi
,该对象未添加到全球范围,这样就可以直接使用属性。把结果的函数的变量:
var o =
(function(){
var a = function(){
alert("hey now!! ");
};
return {"hi":function(){return a;}};
})();
使用属性调用该函数将只返回包含的变量a
的功能,所以你必须从函数调用的返回值调用的函数包含警报:
o.hi()();
var obj = (function(){
var a= function(){
alert("hey now!! ");
};
return {"hi":function(){return a;}};
})();
obj.hi()
您有匿名函数的返回值分配给在当前范围内的变量:
var f = (function() {
var a = function() {
alert("hey now!! ");
};
return {
"hi": function() { return a; }
};
})();
f.hi()();
有两种基本方式:
var MyNameSpace = (function(){
function a(){
alert("hey now!! ");
};
return {a: a};
})();
MyNameSpace.a();
或
(function(){
function a(){
alert("hey now!! ");
};
MyNameSpace = {a: a};
})();
MyNameSpace.a();
我更喜欢第二个方法,因为它似乎更清洁
这就是所谓的 “泄露模块模式” 顺便说一句,你可以阅读它来更好地理解它:)
https://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript
它?
(function(){
var a = function() {
alert("hey now!! ");
};
return {"hi":function(){return a;}};
})().hi()();
我想,以揭露功能,而不是它的代码,语法应
var obj2 = (function(){
var a= function(){
alert("hey now!! ");
};
return {"hi":a};
})();
alert(obj2.hi());
或者你可以换你的“喜”功能在IIFE是这样的...
var myFunction = (function(){
var a = function() {
alert("hey now!! ");
};
return {
"hi": (function(){
return a;
}())
};
})();
myFunction.hi();
取代“return a;”只用“a”就行了。 –