我是JS和jQuery的新手,并且一直在积极地探索bootrap js存储库。关于bootstrap中的插件,我注意到了一些事情。
插件遵循以下结构/骨架:
+function ($) {
'use strict';
// DROPDOWN CLASS DEFINITION
// =========================
var Dropdown = function (element) {
}
Dropdown.VERSION = '3.3.4'
Dropdown.prototype.toggle = function (e) {
}
Dropdown.prototype.keydown = function (e) {
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.dropdown')
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.dropdown
$.fn.dropdown = Plugin
$.fn.dropdown.Constructor = Dropdown
// DROPDOWN NO CONFLICT
// ====================
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
return this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
}(jQuery);
(取自dropdown.js)
的例子当插件用户将值传递给插件时,例如,
$('#mynav').dropdown('hidden'); // just an example
该值在插件内部以下列方式使用:
data[option].call($this) // just an example
我还注意到一些关于bootstrap插件通常运行方式的事情,但我的问题是,bootstrap插件使用的是什么设计模式(如果有的话)?我真的很想知道设计模式是什么。