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 相关文章推荐
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
jquery构造器的实现代码小结
May 16 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
javascript学习笔记(二)数组和对象部分
Sep 30 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 Javascript
AngularJs定制样式插入到ueditor中的问题小结
Aug 01 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
vue代码分割的实现(codesplit)
Nov 13 Javascript
玩转Koa之核心原理分析
Dec 29 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
Vue3.0的优化总结
Oct 16 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
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
python设置检查点简单实现代码
2014/07/01 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Python turtle库的画笔控制说明
2020/06/28 Python
大学生创业策划书
2014/02/02 职场文书
敬老院活动总结
2014/04/28 职场文书
党性教育心得体会
2014/09/03 职场文书
努力工作保证书
2015/02/28 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
焦裕禄观后感
2015/06/03 职场文书
课题研究阶段性总结
2015/08/13 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python