这是一个例子。这是一个根据文档创建的简单函数:http://docs.jquery.com/Plugins/Authoring。
(function ($) {
var methods = {
init: function (options) {
// Gets called when no arg provided to myFunction()
},
doTask1: function () {
// Do task #1
},
doTask2: function () {
// Do task #2
}
};
function HelperMethod(item) {
// some handy things that may be used by one or more of the above functions
}
// This bit comes straight from the docs at http://docs.jquery.com/Plugins/Authoring
$.fn.myFunction = function (method) {
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 on jQuery.dcms");
return null;
}
};
})(jQuery);
我可以像这样调用函数:$('body').myFunction();
或$('body').myFunction("doTask1");
通过调用$('body').myFunction("changePref", "myPrefs");
或$('body').myFunction("{changePref: myPrefs}");
之类的方法,是否存在惯用和/或方便的方式来改变用户的偏好?
或者我会更好地为仅仅以prefs作为参数的用户首选项创建一个单独的函数?
答案 0 :(得分:1)
事实证明,我的init
可以处理任意数量的选项。此外,将单独的函数设置为导致命名空间混乱的做法被认为是不好的做法。有关一些好的文档,请参阅命名空间标题下的http://docs.jquery.com/Plugins/Authoring.。
所以这是一个片段,带有一点评论:
(function ($) {
var methods = {
init: function (options) {
// Gets called when no arg provided to myFunction()
// Also attempts to make use of whatever options provided if they
// don't match the options below.
},
doTask1: function () {
// Do task #1
},
doTask2: function () {
// Do task #2
}
};
//...
如果我在函数中处理它们,我应该能够将我想要的任何参数传递给myFunction()
。