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 相关文章推荐
学习ExtJS Window常用方法
Oct 07 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
Jan 11 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
JavaScript文本框脚本编写的注意事项
Jan 25 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
jQuery实现获取元素索引值index的方法
Sep 18 Javascript
js导出excel文件的简洁方法(推荐)
Nov 02 Javascript
jQuery控制控件文本的长度的操作方法
Dec 05 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
微信小程序在线客服自动回复功能(基于node)
Jul 03 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
js实现带有动画的返回顶部
Aug 09 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目录导航文件代码
2006/10/09 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
JQuery优缺点分析说明
2011/04/10 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
用实例分析Python中method的参数传递过程
2015/04/02 Python
python读写LMDB文件的方法
2018/07/02 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python如何获取文件路径/目录
2020/09/22 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
别名指示符是什么
2012/10/08 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
小学假期安全广播稿
2014/09/28 职场文书
2014年节能工作总结
2014/12/18 职场文书
捐书仪式主持词
2015/07/04 职场文书
小学生暑假安全公约
2015/07/14 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
ant design vue的form表单取值方法
2022/06/01 Vue.js