一、js原生插件的写法
(1)工厂模式
var Helloword = function(objId){
var _get_dom = function(Id){
return document.getElementById(Id);
}
var _aim_obj = _get_dom(objId);
var _say_hello = function(str){
_aim_obj.innerHTML = str; HelloWorld.sayHello('hello','hello text');
}
return{
sayHello:_say_hello
}
}
var Hei = new Helloword('hello');
Hei.sayHello('Hello Word');
var Hei2 = new Helloword('hi');
Hei2.sayHello('hi');
(2)自执行函数
;
var plugin =(function(){
function _firstFunc(str){
console.log(str);
};
return{
firstFunc: _firstFunc,
};
})();
(3)面向对象,prototype原型模式
//自定义类
function plugin(){}
//提供默认参数
plugin.prototype.str = "default param";
//提供方法(如果不传参,则使用默认参数)
plugin.prototype.firstFunc = function(str = this.str){
alert(str);
}
//创建"对象"
var p = new plugin();
//调用方法
p.firstFunc("Hello ! I am firstFunc");//Hello ! I am firstFunc
p.firstFunc();//default param
二、jQuery插件写法
(1)对JQuery自身的扩展插件
这种插件是对JQuery自身的方法库进行扩展的。在使用的时候通过$.MethodName()的方式直接使用。
$.extend({
handleTableUI: function(table){
varthisTable = $("#" +table);
$(thisTable).find("tr").bind("mouseover",function () {
$(this).css({color: "#ff0011", background:"blue" });
});
$(thisTable).find("tr").bind("mouseout",function () {
$(this).css({color: "#000000", background:"white" });
});
}
});
$(document).ready(function() {
$.handleTableUI("newTable");
});
(function ($) {
$.fn.setTableUI= function(options){
var defaults = {
evenRowClass:"evenRow",
oddRowClass:"oddRow",
activeRowClass:"activeRow"
}
var options = $.extend(defaults, options);
this.each(function(){
varthisTable=$(this);
$(thisTable).find("tr").bind("mouseover",function () {
$(this).css({color: "#ff0011", background:"blue" });
});
$(thisTable).find("tr").bind("mouseout",function () {
$(this).css({color: "#000000", background:"white" });
});
});
};
})(jQuery);
不要用在页面显式调用JQuery的方法,而是通过直接添加JQuery插件脚本引用,即可实现对该插件的调用。
(function ($) {
$.tableUI= { set: function (){
varthisTable = $("table");
$(thisTable).find("tr").bind("mouseover",function () {
$(this).css({color: "#ff0011", background:"blue" });
});
$(thisTable).find("tr").bind("mouseout",function () {
$(this).css({color: "#000000", background:"white" });
});
}
};
//此处需要进行自调用
$(function() {
$.tableUI.set();
});
})(jQuery);
特别提醒,该博文有些代码以及说明来自大神博文,说声抱歉,在这里更多的是对于插件的一种整合与记忆。