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右键菜单效果代码
Jul 21 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
BootstrapValidator不触发校验的实现代码
Sep 28 Javascript
一个例子轻松学会Vue.js
Jan 02 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
May 28 Javascript
如何利用React实现图片识别App
Feb 18 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从FLV文件获取视频预览图的方法
2015/03/12 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Python 代码调试技巧示例代码
2020/08/11 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
办公室员工岗位工作职责
2014/03/10 职场文书
机关工会工作总结2015
2015/05/26 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP