zoukankan      html  css  js  c++  java
  • jQuery extend扩展

    jQuery源码中的extend扩展:

    1
    2
    3
    jQuery.extend = jQuery.fn.extend = function() {
         ...
    };

    我们可以用$.extend去扩展自定义的对象,实现方式:

    1,通过$.extend扩展

        /**
        * 扩展对象,override参数的作用是是否覆盖第一个对象中的已有属性,true时覆盖,false时不覆盖.
        * @param {Object}
        * @param {Boolean}
        * @return {Object}
        */
        $.extend = function (destination, source, override) {
            if (override === undefined) {
                override = true;
            }
            for (var property in source) {
                //如果override为true时(不提供此参数时也为true),则覆盖第一个对象的已有属性
                //如果override为false时且第一个对象destination的属性不存在source对象中,则不覆盖第一个对象的已有属性
                if (override || !(property in destination)) {
                    destination[property] = source[property];
                }
            }
            //返回合并后的对象
            return destination;
        };

    2,通过$.deepextend扩展

    /**
        * 深度扩展对象--适用于对象的属性也是对象的情况
        * @param {Object}
        * @return {Object}
        */
        $.deepextend = function (destination, source) {
            for (var property in source) {
                var copy = source[property];//获取source属性值
    
                if (destination === copy) {
                    continue;
                }
    
                //如果copy是一个对象,则递归调用(并传入copy参数),直到copy不是一个对象为止
                if (typeof copy === 'object') {
                    destination[property] = arguments.callee(destination[property] || {}, copy); //递归调用
                //否则直接把copy赋值给destination对象的属性(此时与$.extend方法等价)
                } else {
                    destination[property] = copy;
                }
            }
            return destination;
        };

    3,通过$.fn.extend扩展

    function fun(){}//定义一个类(函数)
     
    //给该类原型上添加一个方法extned
    fun.prototype.extend = function(obj){
        for(var a in obj)
            this[a] = obj[a];//注意:这里的this即是fun.prototype
    }           
     
    //调用extend方法给fun.prototype上添加属性,方法
    fun.prototype.extend({name:"fun2",method1:function(){}})
     
    //输出name,extend,method1
    console.dir(new fun());
  • 相关阅读:
    SQL必知必会-笔记(五)函数
    软件测试面试题:系统中的图片不显示如何排查原因
    windows用浏览器访问linux目录文件
    记测试工作中一次印象深刻的事
    怎么快速适应新的测试工作?
    xshell如何导出日志文件和上传文件
    jmeter+fiddler高效率整理接口脚本
    python-用requests库处理form-data格式的参数
    软件自动化测试工程师面试题集锦(4)
    shell脚本批量检查某个或多个服务的端口和进程是否正常
  • 原文地址:https://www.cnblogs.com/onflying/p/3137706.html
Copyright © 2011-2022 走看看