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 相关文章推荐
xmlhttp缓存清除的2种解决方法
Dec 13 Javascript
JavaScript使用focus()设置焦点失败的解决方法
Sep 03 Javascript
JavaScript中Function()函数的使用教程
Jun 04 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
May 10 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
Vue中父组件向子组件通信的方法
Jul 11 Javascript
《javascript少儿编程》location术语总结
May 27 Javascript
浅谈从React渲染流程分析Diff算法
Sep 08 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
pandas 选择某几列的方法
2018/07/03 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
物流毕业生个人的自我评价
2014/02/13 职场文书
父母寄语大全
2014/04/12 职场文书
党员干部一句话承诺
2014/05/30 职场文书
小学生校园广播稿
2014/09/28 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
最新最全的手机号验证正则表达式
2022/02/24 Javascript