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类中定义原型方法的两种实现的区别
Mar 08 Javascript
10款非常有用的 Ajax 插件分享
Mar 14 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
跟我学习javascript的循环
Nov 18 Javascript
设置jquery UI 控件的大小方法
Dec 12 Javascript
React-Native使用Mobx实现购物车功能
Sep 14 Javascript
vue中倒计时组件的实例代码
Jul 06 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
使用vue-router在Vue页面之间传递数据的方法
Jul 15 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 Javascript
解决pycharm双击但是无法打开的情况
Oct 31 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仿盗链代码
2012/06/03 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
常用简易JavaScript函数
2009/04/09 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
跟老齐学Python之list和str比较
2014/09/20 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python框架flask表单实现详解
2019/11/04 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
安全大检查反思材料
2014/01/31 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
美丽人生观后感
2015/06/03 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书