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 相关文章推荐
JS获得图片alt信息的方法
Apr 01 Javascript
AngularJS基础教程之简单介绍
Sep 27 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
Jan 06 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
vue 的点击事件获取当前点击的元素方法
Sep 15 Javascript
JS实现的简单tab切换功能完整示例
Jun 20 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 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
php实现设计模式中的单例模式详解
2014/10/11 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
Python Flask-web表单使用详解
2017/11/18 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python 检查文件mime类型的方法
2018/12/08 Python
python多线程抽象编程模型详解
2019/03/20 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
Django权限设置及验证方式
2020/05/13 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
网页美工求职信
2014/02/15 职场文书
检举信的格式及范文
2014/04/04 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
mysql创建存储过程及函数详解
2021/12/04 MySQL
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技