JS 扩展方法

jquery插件的开发包括两种:一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jquery类本身添加方法。

jquery的全局函数就是属于jquery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。
也可以理解为另外两种方式,一种是jQuery本身的扩展方法,另一种是jQuery所选对象的扩展方法。
1.jQuery.extend(Object);   // jQuery 本身的扩展方法 
2.jQuery.fn.extent(Object);    // jQuery 所选对象扩展方法
下面就两种函数的开发做详细的说明。
 
1、类级别的插件开发
类级别的插件开发最直接的理解就是给jQuery类添加类方法,
可以理解为添加静态方法。典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中。
关于类级别的插件开发可以采用如下几种形式进行扩展:
1.1 添加一个新的全局函数
[javascript] 
$.foo = function(){  
            alert("foo");  
        }  
        //调用方法   
        $.foo();  
1.2 使用jQuery.extend(object);
[javascript] 
$.extend({  
            foo:function(){  
                alert("foo");  
            },  
            bar:function(){  
                alert("bar");  
            }  
        })  
        //调用方法   
        $.foo();  
        $.bar();  
1.3 使用命名空间
[javascript] 
$.myPlugin = {  
            foo:function(){  
                alert("foo");  
            },  
            bar:function(){  
                alert("bar");  
            }  
        }  
        //调用方法  
        $.myPlugin.foo();  
        $.myPlugin.bar();   
 
2、对象级别的插件开发
[javascript] 
$.fn.foo = function(){  
            alert("hello jquery");  
        }  
        $('#myF').foo()  
[javascript] 
(function($){     
            $.fn.extend({     
                pluginName:function(opt,callback){     
                    alert("foo");     
                }     
            })     
        })(jQuery);    
        $("#myF").pluginName();  
[javascript]  
(function (jq) {   
            jq.fn.foo = function (obj) {   
                alert(obj);  
            };   
        })(jQuery)   
        $("#myF").foo("hello jquery");  
 
 

 扩展ajax

    

$(function () {
//备份jquery的ajax方法
var _ajax = $.ajax;
//重写jquery的ajax方法
$.ajax = function (opt) {
//备份opt中error和success方法
var fn = {
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (data, textStatus) { }
}
if (opt.error) {
fn.error = opt.error;
}
if (opt.success) {
fn.success = opt.success;
}

//扩展增强处理
var _opt = $.extend(opt, { // 对opt 进行扩展 这样 新的success 会覆盖opt的success的方法
success: function (data, textStatus) {
//成功回调方法增强处理  所有的ajax 都会执行到这里,如果有需要过滤ajax 的在下面做操作。 操作之后再执行ajax 本身的sucess 方法

fn.success(data, textStatus);
}
catch (e) {
}
}
});
_ajax(_opt);
};
})

转载于:https://www.cnblogs.com/mychuizi/p/5384017.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值