当前位置: 代码迷 >> Web前端 >> jquery兑现aop
  详细解决方案

jquery兑现aop

热度:186   发布时间:2012-09-19 13:43:53.0
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);

  相关解决方案