javascript(3、4)moduleモード、立実行関数(Evernote)
3229 ワード
基本的な特徴:モジュール化 カプセル化変数とfunctionは、大域的なnamaspasceに接触しないで、松結合
publicだけを暴露します
3.クローズドで保存状態
クローズドは、直接に入力されたこれらのパラメータを参照することができ、これらのロックされた着信パラメータを利用して、自己実行関数式から状態を効果的に保存することができる.
publicだけを暴露します
1.var blogModule = (function (my) {
//
return my;
} (blogModule || {})); ---- blogmodule, {};
2.var blogModule = (function (my) {
var oldAddPhotoMethod = my.AddPhoto;
my.AddPhoto = function () {
// , oldAddPhotoMethod
};
return my;
} (blogModule));
このような方法によって、私達は重積載の目的を達成しました.もちろん内部で既存の属性を使い続けたいなら、oldAdd PhotoMethodを呼び出すことができます.3.クローズドで保存状態
クローズドは、直接に入力されたこれらのパラメータを参照することができ、これらのロックされた着信パラメータを利用して、自己実行関数式から状態を効果的に保存することができる.
// , i locked
// , , i
// i
// , I am link #10( 10 a )
var elems = document.getElementsByTagName('a');
for (var i = 0; i < elems.length; i++) {
elems[i].addEventListener('click', function (e) {
e.preventDefault();
alert('I am link #' + i);
}, 'false');
}
// ,
// i locked , , i a ( 10)
// lockedInIndex ,
// ,
var elems = document.getElementsByTagName('a');
for (var i = 0; i < elems.length; i++) {
(function (lockedInIndex) {
elems[i].addEventListener('click', function (e) {
e.preventDefault();
alert('I am link #' + lockedInIndex);
}, 'false');
})(i);
}
// ,
// addEventListener
// ,
var elems = document.getElementsByTagName('a');
for (var i = 0; i < elems.length; i++) {
elems[i].addEventListener(
‘click’,(function(locked Index){return function (e) {e.preventDefault();alert('I am link #' + lockedInIndex);
};
})(i), 'false');
}counter.i;//undefined iは、iがオブジェクトの属性iに戻るのではないため、//参照エラー:iは定義されていない(iはクローズドにしか存在しないため).
4. c++ !!!//
// return ,
// counter, function
var counter = (function () {
var i = 0;
return {
get: function () {
return i;
},
set: function (val) {
i = val;
},
increment: function () {
return i++;
}
};
} ());
// counter ,
counter.get(); // 0
counter.set(3);
counter.increment(); // 4
counter.increment(); // 5
2015年1月