javascript 之 扩展对象 jQuery.extend
在JQuery的API手册中,extend方法挂载在JQuery 和 JQuery.fn两个不同的对象上,但在JQuery内部代码实现的是相同的,只是功能各不相同。
官方解释:
jQuery.extend Merge the contents of two or more objects together into the first object. 把两个或者多个对象合并到第一个对象当中;
jQuery.fn.extend Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods. 把对象挂载到 jQuery 的 prototype 上以扩展一个新的 jQuery 实例方法 。
一、合并对象
语法:jQuery.extend(target [,object1] [,objectN]);
案例:这只是浅度拷贝
var obj1={ name :'Tom',age:21};
var obj2={name:'Jerry',sex:'boy'};
console.log($.extend({},obj1,obj2));
输出:{name: "Jerry", age: 21, sex: "boy"}
二、深浅拷贝
语法:jQuery.extend([deep] , target , object1 [ , objectN]);
对比:该语法与上面的描述多了一个boolean类型的【deep】传参,当为true是,将 object1, objectN深度复制后合并到target中。
案例:先来对比一下,理解什么是深度复制,什么是浅度复制的区别
var obj1={
name="John",
location:{
city:"Boston",
county:"USA"
}
}
var obj2 = {
last: "Resig",
location: {
state: "MA",
county: "China"
}
}
$.extend(false, {}, obj1, obj2); // { name: "John", last: "Resig", location: { state: "MA", county: "China" }}
$.extend(true, {}, obj1, obj2); // { name: "John", last: "Resig", location: { city: "Boston", state: "MA", county: "China" }}
总结:从这里可以看出,深度复制会递归遍历每个对象中含有复杂对象(如:数组,函数,json对象等)
三、jQuery.fn.extend 和 jQuery.extend 的区别
概念: 类方法 和 实例方法
类方法:是直接可以使用类引用,不需要实例化就可以使用的方法,一般在项目中类方法都是被设置为工具类使用
实例方法:必须创建实例,然后才能通过实例调用 实例方法
说明:jQuery 是一个封装的很好的类,可以使用jQuery选择器来创建jQuery来创建jQuery的实例,比如:使id选择器$('#btn')来创建一个实例
区别:
1、jQuery.extend(object);相当于对类方法的扩展 ,可以理解为静态方法
jQuery.extend({
min:function(a,b){ return a<b?a:b }
max:function(a,b){return a>b?a:b }
})
jQuery.min(2,3);
jQuery.max(4,5)
2、jQuery.fn.extend=jQuery.prototype.extend;相当于对实例方法的扩展
$.fn.extend({
setRed:function(){
$(this).css("color","red");
}
})
$('.tip').setRed();
说明:$(".tip")创建了一个jQuery实例,通过它可以调用成员方法setRed
2.1、以上代码可以实现预想的扩展,最好返this以满足jQuery链式操作的需要
改良后的代码
$.fn.extend(){
red:function(){
return $(this).css("color","red");
}
}
javascript 之 扩展对象 jQuery.extend的更多相关文章
- jquery插件的2种扩展开发(jQuery.extend和jQuery.fn.extend的区别)
1.类级别 jQuery.extend(object) 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQu ...
- javascript 之 扩展对象
注意点:在js中常见的几种方进行扩展 第一种:ES6提供的 Object.assign(); 第二种:ES5提供的 extend()方法 第三种:Object对象提供的 defineProperty( ...
- javascript 之 扩展对象 Object.assing
语法:Object.assign(target,...source) 说明:Object.assign方法的第一个参数是目标对象,后面的参数都是源对象 一.以对象为参数的合并 1.第一个参数都是对象, ...
- JavaScript学习总结(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- jQuery.fn和jQuery.prototype jquery.extend() jquery.fn.extend()区别介绍
这里的 jQuery , jQuery.fn , jQuery,fn,init ,jQuery,prototype 都代表什么. 来看下jQuery的源码是怎么样定义的: (function( win ...
- JavaScript学习总结(五)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- jQuery extend 方法使用 (转)
方法介绍 jQuery 的 API 手册中,extend 方法挂载在 jQuery 和 jQuery.fn 两个不同的对象上,但在 jQuery 内部代码实现的是相同的,只是功能各不相同. 先看看官方 ...
- jQuery.fn.extend和jQuery.extend
<script src="http://www.cssrain.cn/demo/JQuery+API/jquery-1[1].2.1.pack.js" type=" ...
- jquery extend源码解析
$.extend(obj1,0bj2,{"name":"s","age":22}) //target 要拷贝到哪个对象上 // i 要执行拷 ...
随机推荐
- iftop -i eth0 -B -F
iftop -i eth0 -B -F 108.51.5.220 1 https://www.cnblogs.com/kobexffx/p/11000337.html
- Tosca 一不小心,我把那一排模块全关闭了,怎么打开
#写在前面, 之前用的时候,学了很多,基本都忘记了,现在再重新用,啥啥都不记得了,我还是应该事无巨细的全部记下来 红线这一排我关了好多,在哪儿打开 在这打开
- PHP 构造函数和析构函数
构造函数 __construct ([ mixed $args [, $... ]] ) : void PHP 5 允行开发者在一个类中定义一个方法作为构造函数.具有构造函数的类会在每次创建新对象时先 ...
- Vue 事件结合双向数据绑定实现todolist 待办事项 已经完成 和进行中
<template> <div id="app"> <input type="text" v-model='todo' @keyd ...
- 磁盘I/O高居不下,通过什么来查看占用I/O的进程?
iotop命令是一个用来监视磁盘I/O使用状况的top类工具.iotop具有与top相似的UI,其中包括PID.用户.I/O.进程等相关信息.Linux下的IO统计工具如iostat,nmon等大多数 ...
- wpf程序,只允许运行一个程序实例问题
https://bbs.csdn.net/topics/390486402 https://codereview.stackexchange.com/questions/20871/single-in ...
- linux非root用户安装ncurses-devel依赖
很明显,如果我们通过yum或rpm下载安装,始终无法绕开root用户,除非我们不用yum或rpm.嗯,我们直接用源码安装.下载源码包,到http://ftp.gnu.org/gnu/ncurses/我 ...
- 报错:Unable to read additional data from client sessionid 0x36ab52d38c20b20, likely client has closed socket
报错背景: CDH集群中,将kafka和Flume整合,将kafka的数据发送给Flume消费. 启动kafka的时候正常,但是启动Flume的时候出现了报错现象. 但是我检查了Flume,Flume ...
- LeetCode_350. Intersection of Two Arrays II
350. Intersection of Two Arrays II Easy Given two arrays, write a function to compute their intersec ...
- 【Leetcode_easy】1037. Valid Boomerang
problem 1037. Valid Boomerang 参考 1. Leetcode_easy_1037. Valid Boomerang; 完