(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()();
デモ:あなたは現在のスコープ内の変数に無名関数の戻り値を代入する必要がhttp://jsfiddle.net/Guffa/9twaH/
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();
が、それはそれはところで「暴露のモジュールパターン」と呼ばれているクリーナー
だので、私は2番目の道を好みますあなたはそれをよりよく理解するために読むことができます:)
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());
それとも、そのような生命維持にあなたの「ハイテク」機能をラップすることができ...
あるべきと仮定var myFunction = (function(){
var a = function() {
alert("hey now!! ");
};
return {
"hi": (function(){
return a;
}())
};
})();
myFunction.hi();
"return a;"を置き換えます。ちょうど "a"とそれは動作します。 –