私は jQuery プラグインに取り組んでおり、同じ名前空間内のメソッド間で関数と変数を共有することに少し混乱しています。私は次のことがうまくいくことを知っています:
(function($){
var k = 0;
var sharedFunction = function(){
//...
}
var methods = {
init : function() {
return this.each(function() {
sharedFunction();
});
},
method2 : function() {
return this.each(function() {
sharedFunction();
});
}
};
$.fn.myPlugin = function(method) {
// Method calling logic
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method){
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist here');
}
};
})(jQuery);
しかし、これを行うためのより良い方法があるかどうか疑問に思っています。変数「k」と関数「sharedFunction」が技術的にグローバルではないことは理解していますが(プラグインの外部から直接アクセスできないという点で)、これはせいぜい洗練されていないようです。
$.data がオプションであることは知っていますが、プラグイン内の複数のメソッドからアクセスする必要がある変数と関数が大量にある場合、これは途方もない混乱になる可能性があるようです。
任意の洞察をいただければ幸いです。ありがとう!