jquery学习笔记之extend()
来源:互联网 发布:韩国讲网络暴力的电影 编辑:程序博客网 时间:2024/06/14 00:02
官方资料:
jQuery.extend()
jQuery.fn.extend()
jQuery.extend()用于将两个或多个对象的内容同时合并到第一个对象中
$(function(){ var objA = {name:'张三',addr:{country:'中国',city:'北京'},age:20}; var objB = {name:'李四',addr:{city:'广州'},sex:'男'}; var emptyObj = {}; console.log("objA===>"+JSON.stringify(objA)); console.log("objB===>"+JSON.stringify(objB)); var result = $.extend(objA,objB); console.log("objA===>"+JSON.stringify(objA)); console.log("result===>"+JSON.stringify(result)); });
观察上图显示的结果,我们可以看到该方法中的第一个参数被修改,但有时我们又不希望的被修改,这时我们可以用一个空对象作为目标对象(第一个参数)
var result = $.extend(emptyObj,objA,objB);
如果我们希望addr
中的属性也能够被覆盖,可以使用布尔类型的deep参数来实现,如果值为false则不需要设置该参数,此处仅为了演示效果。
var result = $.extend(false,objA,objB);
根据显示内容可知,当deep为false时,addr属性是被直接覆盖的(即没有考虑其内部属性)
var result = $.extend(true,objA,objB);
根据显示内容可知,当deep为true时,addr属性是被循环覆盖的(即其内部属性也被相同关键字的属性值替换)
$(function(){ var objA = {name:'张三',addr:{country:'中国',city:'北京'},age:20}; var objB = {name:'李四',addr:{city:'广州'},sex:'男'}; var emptyObj = {}; console.log("objB===>"+JSON.stringify(objB)); var result = $.extend(emptyObj, objA,objB); console.log("result===>"+JSON.stringify(result)); emptyObj.addr.city = '武汉'; console.log("<===>emptyObj.addr.city = '武汉'<===>"); console.log("objB===>"+JSON.stringify(objB)); console.log("result===>"+JSON.stringify(result)); });
让我们将deep参数设置true,看看效果
var result = $.extend(true,emptyObj, objA,objB);
对比上面两个实验结果可知,当deep为false时,对象和数组的拷贝是浅拷贝,只是引用了该对象或数组的引用,而非具体的值。
而当deep为true时,对象和数组的拷贝是深拷贝,是将其内部每一个基础类型的元素的值进行了复制。
当只有一个参数时,则会将jQuery对象本身作为目标元素,这样,你可以添加新函数到jQuery的命名空间中,这对于插件的作者希望添加新的函数到jQuery中是有用的。
$(function(){ $.extend({'say': function() { console.log("hello world!");}}); $.say(); });
jQuery.fn.extend()用于将一个对象合并到jQuery实例对象上
借用jQuery官网的例子,我们来看下效果:
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>jQuery.fn.extend demo</title> <script type="text/javascript" src="jquery-3.2.1.js"></script> <style> label { display: block; margin: .5em; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body><label><input type="checkbox" name="foo"> Foo</label><label><input type="checkbox" name="bar"> Bar</label><script>jQuery.fn.extend({ check: function() { return this.each(function() { this.checked = true; }); }, uncheck: function() { return this.each(function() { this.checked = false; }); }});// Use the newly created .check() method$( "input[type='checkbox'][name='foo']" ).check();</script></body></html>
界面显示效果为:
阅读全文
0 0
- jquery学习笔记之extend()
- jQuery学习笔记:extend
- <学习笔记> jQuery.extend 函数详解
- jQuery源码研究分析学习笔记-jQuery.extend()、jQuery.fn.extend()(八)
- Jquery学习 Extend
- 学习jquery源代码---$.extend
- jquery之extend解析
- Jquery的extend方法$.extend()学习
- jQuery源码解析之jQuery.extend(),jQuery.fn.extend()
- jquery自定义函数之extend
- jQuery 源码学习(一)jQuery.extend()
- jQuery学习笔记之"$"
- 学习笔记之jquery
- jquery扩展之jQuery.fn.extend
- jquery源码阅读之jquery.extend
- jQuery之插件开发--jQuery.fn.extend()
- jquery源码分析之扩展函数 extend, $.extend
- jQuery.extend $.extend详解
- java dbutil 1.1.3 版本更新
- python替换字符串中的子串 %(xxxx)s
- Java中常见的错误
- opencv 矩阵与一个常数相乘的 两种实现方法
- ORACLE-SQL编写规范(详细解释)
- jquery学习笔记之extend()
- UITableView出现上移/下移64的问题 解析
- Gson解析的三种方式
- 客制化 GH60 XD60 像 Poker 一样的 60% 机械键盘 (1)设计键盘
- jdk源码解析(十二)——线程安全与锁优化
- triangle Java code
- C++定时器
- Kubernetes和Spring Cloud哪个部署微服务更好?
- spring boot jpa 中使用逻辑删除