jQuery extend 的简单实例


Posted in Javascript onSeptember 18, 2013
jQuery.extend = jQuery.fn.extend = function() {
    var options, name, src, copy, copyIsArray, clone,
        target = arguments[0] || {},
        i = 1,
        length = arguments.length,
        deep = false;
    // Handle a deep copy situation
    if ( typeof target === "boolean" ) {
        deep = target;
        target = arguments[1] || {};
        // skip the boolean and the target
        i = 2;
    }
    // Handle case when target is a string or something (possible in deep copy)
    if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
        target = {};
    }
    // extend jQuery itself if only one argument is passed
    if ( length === i ) {
        target = this;
        --i;
    }
    for ( ; i < length; i++ ) {
        // Only deal with non-null/undefined values
        if ( (options = arguments[ i ]) != null ) {
            // Extend the base object
            for ( name in options ) {
                src = target[ name ];
                copy = options[ name ];
                // Prevent never-ending loop
                if ( target === copy ) {
                    continue;
                }
                // Recurse if we're merging plain objects or arrays
                if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
                    if ( copyIsArray ) {
                        copyIsArray = false;
                        clone = src && jQuery.isArray(src) ? src : [];
                    } else {
                        clone = src && jQuery.isPlainObject(src) ? src : {};
                    }
                    // Never move original objects, clone them
                    target[ name ] = jQuery.extend( deep, clone, copy );
                // Don't bring in undefined values
                } else if ( copy !== undefined ) {
                    target[ name ] = copy;
                }
            }
        }
    }
    // Return the modified object
    return target;
};
Javascript 相关文章推荐
IE和FireFox(FF)中js和css的不同
Apr 13 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
Apr 07 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
Dec 25 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
Mongoose学习全面理解(推荐)
Jan 21 Javascript
node.js学习之断言assert的使用示例
Sep 28 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
JavaScript JSON数据处理全集(小结)
Aug 15 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
Apr 10 Javascript
Javascript中Event属性搜集整理
Sep 17 #Javascript
js获取html文件的思路及示例
Sep 17 #Javascript
JS的Document属性和方法小结
Sep 17 #Javascript
JS画5角星方法介绍
Sep 17 #Javascript
js带按钮的提示框可供选择示例代码
Sep 17 #Javascript
今天是星期几的4种JS代码写法
Sep 17 #Javascript
关于javascript event flow 的一个bug详解
Sep 17 #Javascript
You might like
自己动手做一个SQL解释器
2006/10/09 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
python删除某个字符
2018/03/19 Python
python框架中flask知识点总结
2018/08/17 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
大学生军训感想
2014/02/16 职场文书
优秀大学生自荐信
2014/06/09 职场文书
优秀家长自荐材料
2014/08/26 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
免职证明样本
2014/10/23 职场文书
自主招生自荐信范文
2015/03/04 职场文书
计算机实训心得体会
2016/01/14 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python