我用這種方法取得了成功。 (添加到樣板插件,因此包括MIT許可評論)
請參閱原型上@global + @class和@global的使用。 似乎這樣做。
代碼複製如下: 享受&請更好。
/**
* jQuery lightweight plugin boilerplate
* Original author: @ajpiano
* Further changes, comments: @addyosmani
* Licensed under the MIT license
*/
;(function ($, window, document, undefined) {
var pluginName = "Application",
defaults = {
propertyName: "value"
};
/**
* @global
* @class Application
* @description MASTER: Sets up and controls the application
*
* @returns Object
*/
function Application(element, options) {
this.element = element;
this.options = $.extend({}, defaults, options) ;
this._defaults = defaults;
this._name = pluginName;
this.init();
window[pluginName] = this;
}
/** @global */
Application.prototype = {
/**
* @description call pre-life initialisations and tests here
*/
init: function() {
var that = this;
that._build();
that._setNotifications();
},
/**
@description Set up a pub sub for global notifications such a state-changes.
*/
_setNotifications: function(el, options) {
console.log('Application=>setNotifications()');
},
/**
@description All environment setup done we now call other plugins.
*/
_build: function(el, options) {
console.log('Application=>build()');
}
};
$.fn[pluginName] = function (options) {
return this.each(function() {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName,
new Application(this, options));
}
});
};
})(jQuery, window, document);