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 相关文章推荐
jQuery中与toggleClass等价的程序段 以及未来学习的方向
Mar 18 Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 Javascript
JS及JQuery对Html内容编码,Html转义
Feb 17 Javascript
js禁止表单重复提交
Aug 29 Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
详解将微信小程序接口Promise化并使用async函数
Aug 05 Javascript
vue设置一开始进入的页面教程
Oct 28 Javascript
vue实现输入框自动跳转功能
May 20 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
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调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
功能强大的php分页函数
2016/07/20 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
php实现等比例压缩图片
2018/07/26 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
PHP7新特性简述
2017/06/11 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
Python实现购物程序思路及代码
2017/07/24 Python
Python中的引用知识点总结
2019/05/20 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
优秀小学生家长评语
2014/01/30 职场文书
大学校园活动策划书
2014/02/04 职场文书
小学六年级学生评语
2014/04/22 职场文书
服务理念口号
2014/06/11 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
银行求职信模板
2015/03/20 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
Vue和Flask通信的实现
2021/05/19 Vue.js