jquery.data()&jquery.extend()
JQuery.data()方法
Jquery提供的在节点存取数据的方法。
var $el = $('#app');
//使用键值对的方式存数据
$el.data('name', 'jinx');
$el.data('age', '19');
//也可以使用对象同时存储
$el.data({
name: 'jinx',
age: '19'
});
//获取存到节点的全部数据
$el.data();
//按照键获取
$el.data('name');
//移除添加的数据
$el.removeData();
$el.removeData('age');
JQuery.extend()方法
Jquery提供的对象拼接方法:
$.extend( [deep ], target, object1 [, objectN ] )
var obj1 = {
name : 'jinx',
age: 14,
info: {
hobby: 'run',
hair: 'braids'
}
}
var obj2 = {
age: 10,
sex: 0,
info: {
hobby: 'jump'
}
}
//非深度拼接
$.extend(obj1, obj2);
console.log(obj1);
/*:obj1={
name : 'jinx',
age: 10,
info: {
hobby: 'jump'
},
sex: 0
}
*/
//若是使用 $.extend(true, obj1, obj2);
//则为深度拼接:
/*:obj1={
name : 'jinx',
age: 10,
info: {
hobby: 'jump',
hair: 'braids'
},
sex: 0
}*/
注:返回值为拼接完成的目标对象。
非深度拼接时,相同键则替换值,而不同键则拼接,所以在非深度拼接的情况下修改拼接对象可能会改变其他拼接对象,因为是引用值。
观察obj1.info的变化,深度拼接则是进行深度克隆。
JQuery.data()方法
Jquery提供的在节点存取数据的方法。
var $el = $('#app');
//使用键值对的方式存数据
$el.data('name', 'jinx');
$el.data('age', '19');
//也可以使用对象同时存储
$el.data({
name: 'jinx',
age: '19'
});
//获取存到节点的全部数据
$el.data();
//按照键获取
$el.data('name');
//移除添加的数据
$el.removeData();
$el.removeData('age');
JQuery.extend()方法
Jquery提供的对象拼接方法:
$.extend( [deep ], target, object1 [, objectN ] )
var obj1 = {
name : 'jinx',
age: 14,
info: {
hobby: 'run',
hair: 'braids'
}
}
var obj2 = {
age: 10,
sex: 0,
info: {
hobby: 'jump'
}
}
//非深度拼接
$.extend(obj1, obj2);
console.log(obj1);
/*:obj1={
name : 'jinx',
age: 10,
info: {
hobby: 'jump'
},
sex: 0
}
*/
//若是使用 $.extend(true, obj1, obj2);
//则为深度拼接:
/*:obj1={
name : 'jinx',
age: 10,
info: {
hobby: 'jump',
hair: 'braids'
},
sex: 0
}*/
注:返回值为拼接完成的目标对象。
非深度拼接时,相同键则替换值,而不同键则拼接,所以在非深度拼接的情况下修改拼接对象可能会改变其他拼接对象,因为是引用值。
观察obj1.info的变化,深度拼接则是进行深度克隆。
扩展:对象的克隆和拼接(原生js)
- 对象的克隆
//可以先将对象转为字符形式,然后再转为对象即可(需要注意的是Json.syringify对数据有长度限制)
function cloneJSON(jsonObj){
try{
return jsonObj ? JSON.parse(JSON.stringify(jsonObj)) : jsonObj;
}catch(e){
console.log(e, jsonObj);
return jsonObj;
}
}
- 对象的拼接(jQuery.extend的源码)
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;
// skip the boolean and the target
target = arguments[ i ] || {};
i++;
}
// 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 ( i === length ) {
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;
};
jquery.data()&jquery.extend()的更多相关文章
- jQuery data
大家会如何设计一个缓存呢? 一个简单的Cache (function(){ var __cache = {}, Cache = { get: function(__name){ return __ca ...
- html 5 data-* (dataset) 属性和 jquery data方法比较
一些文章在介绍html 5 data-* (dataset)属性时,会提到jquery的data方法,认为data方法能够很好的利用html 5的这个特性.但实际上,二者的兼容性是很差的.下面给出一段 ...
- jQuery.Data源码
jQuery.data的是jQuery的数据缓存系统.它的主要作用就是为普通对象或者DOM元素添加数据. 1 内部存储原理 这个原理很简单,原本要添加在DOM元素本身的数据,现在被集中的存储在cach ...
- jQuery源码解读 - 数据缓存系统:jQuery.data
jQuery在1.2后引入jQuery.data(数据缓存系统),主要的作用是让一组自定义的数据可以DOM元素相关联——浅显的说:就是让一个对象和一组数据一对一的关联. 一组和Element相关的数据 ...
- 转:jQuery.data
原文地址:http://www.it165.net/pro/html/201404/11922.html 内存泄露 首先看看什么是内存泄露,这里直接拿来Aaron中的这部分来说明什么是内存泄露,内存泄 ...
- JQuery data API实现代码分析
JQuery data 接口是什么? .data() Store arbitrary data associated with the matched elements or return the v ...
- jQuery.data的是jQuery的数据缓存系统
jQuery.Data源码 jQuery.data的是jQuery的数据缓存系统 jQuery.data的是jQuery的数据缓存系统.它的主要作用就是为普通对象或者DOM元素添加数据. 1 内部存储 ...
- 读jQuery源码 jQuery.data
var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, rmultiDash = /([A-Z])/g; function internalData( elem, n ...
- jQuery.data() 与 jQuery(elem).data()源码解读
之前一直以为 jQuery(elem).data()是在内部调用了 jQuery.data(),看了代码后发现不是.但是这两个还是需要放在一起看,因为它们内部都使用了jQuery的数据缓存机制.好吧, ...
随机推荐
- React官方文档笔记之快速入门
快速开始 JSFiddle 我们建议在 React 中使用 CommonJS 模块系统,比如 browserify 或 webpack. 要用 webpack 安装 React DOM 和构建你的包: ...
- underscore源码阅读
1:函数式编程初探 2:if(obj.length === +obj.length)的判断 3:JS对象属性用中括号表示的优点在于可以用变量表示属性 4:callee,caller---JS高级程序设 ...
- CSS选择器详细总结
一.基本选择器 序号 选择器 含义 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元 ...
- 最近最久未使用页面淘汰算法———LRU算法(java实现)
请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. LRU算法,即Last Recently Used ---选择最后一次访问时间距离当前时间最长的一页并淘汰之--即淘汰最长时间没有使用的页 按照 ...
- 如何在苹果笔记本上装win7系统
有一哥们,他说他boss给他配了台苹果,可是很不习惯,让我给装一个win系统.以下是我从百度借鉴的: 步骤一 先使用Boot Camp 分割磁盘 1 在Finder工具条中点选"前往&q ...
- FTP用户无法登陆排错详解
FTP作为一种简单便捷的文件共享技术,在许多企业内部得到使用.若启用FTP的验证控制,管理员更可对不同的用户设置不同的访问权限,控制用户对特定内容的访问.IIS中的FTP站点只有一种验证方式,即基本验 ...
- BZOJ_4320_ShangHai2006 Homework_分块
BZOJ_4320_ShangHai2006 Homework_分块 Description 1:在人物集合 S 中加入一个新的程序员,其代号为 X,保证 X 在当前集合中不存在. 2:在当 ...
- BZOJ_3589_动态树_容斥原理+树链剖分
BZOJ_3589_动态树_容斥原理+树链剖分 题意: 维护一棵树,支持1.子树内点权加上一个数 2.给出k条链,求路径上的点权和(重复的计算一次) (k<=5) 分析: 可以用树剖+线段树解 ...
- Python初学者必看(1)
python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- Ubuntu配置tomcat9
buntu 安装jdk:[链接] Ubuntu安装eclipse:[链接] Ubuntu下安装MySQL与mysql workbench:[链接] Ubuntu配置tomcat9:[链接] Ubunt ...