`
caniggia1986
  • 浏览: 149742 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jquery实现aop?

阅读更多
如果想重写jQuery某个方法又不想直接改源码,你可以这样
改写unique()
(function($){
 
    var _old = $.unique;//备份原始方法
 
    $.unique = function(arr){ 
        //如果是dom对象就使用原始方法
        if (!!arr[0].nodeType){
            return _old.apply(this,arguments);
        } else {
            //使用grep/inArray组合方法去重
            return $.grep(arr,function(v,k){
                return $.inArray(v,arr) === k;
            });
        }};})(jQuery);
 
//test
var arr = ['first',7,true,2,7,true,'last','last'];
$.unique(arr); // ["first", 7, true, 2, "last"]var arr = [1,2,3,4,5,4,3,2,1];
$.unique(arr); // [1, 2, 3, 4, 5]


方法改写的模式:
(function($){
 
    // store original reference to the method
    var _old = $.fn.method;
 
    $.fn.method = function(arg1,arg2){
 
        if ( ... condition ... ) {
           return  .... 
        } else {           // do the default
           return _old.apply(this,arguments);
        }
    };})(jQuery);

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics