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 相关文章推荐
JavaScript While 循环基础教程
Apr 05 Javascript
jquery 添加节点的几种方法介绍
Sep 04 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
JavaScript事件委托的技术原理探讨示例
Apr 17 Javascript
JS案例分享之金额小写转大写
May 15 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
setTimeout学习小结
Feb 08 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
Mar 13 Javascript
js实现倒计时秒杀效果
Mar 25 Javascript
es6函数之尾调用优化实例分析
Apr 25 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
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
JS实现分页导航效果
2020/02/19 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python使用opencv进行人脸识别
2017/04/07 Python
Python网络编程 Python套接字编程
2017/09/13 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
python3 线性回归验证方法
2019/07/09 Python
python 列表推导式使用详解
2019/08/29 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
python合并多个excel文件的示例
2020/09/23 Python
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
工厂标语大全
2014/10/06 职场文书
2014年实习期工作总结
2014/11/27 职场文书
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸