コードは名前空間パターンを示唆していますが、わずかに不足しています。
あなたはこのようなことを検討したいかもしれません
var TAP = (function($) {//functional namespace
var settings = {
hold_threshold: 750,
hold_timer: null,
timer: null
};
var setSettings = function(s) {
settings = $.extend(settings, s);
};
var getSettings = function() {
return settings;
};
return {
set: setSettings,
get: getSettings
};
})(jQuery);
したがって、TAP
プライベートメンバーsettings
とパブリックメンバーがset()
ありget()
ます。プライベートメンバーとパブリックメンバーを簡単に追加できることがわかります。
これで、TAPがスコープ内にある場所からTAP設定を設定および取得するメカニズムができました。
TAP.set({hold_threshold: 500});
var Navigation = {
init: function () {
self = this;
$('#button').live(tapMode, function () {
alert(settings[TAP.get().hold_threshold]);
});
}
}
グローバル名前空間のメンバーとして、そのTAP
パブリックメソッドはすべてのスコープで使用できます。
より一般的には、MODULEパターンを使用します。これは、1つのPROJECTメンバーのみをグローバル名前空間に配置します。これには、任意の数のMODULESが含まれ、それぞれに任意の数の機能的なNAMESPACEが含まれます。
var MYPROJECT = {};//global
MYPROJECT.MODULE1 = {};
MYPROJECT.MODULE1.TAP= (function($) {
var settings = {
hold_threshold: 750,
hold_timer: null,
timer: null
};
var setSettings = function(s) {
settings = $.extend(settings, s);
};
var getSettings = function() {
return settings;
};
return {
set: setSettings,
get: getSettings
};
})(jQuery);
慣例により、MYPROJECT、そのモジュール、およびその機能的な名前空間は大文字で表記されます。