菜单

规律的模拟代码澳门太阳集团,数据部分

2020年1月27日 - 新闻中心

本条数据当然要因而质量来实行存取,不过,有几个属性如何是好吧?,要定义八个本性吗?,属性的名字叫什么啊?会不会与任何的品质有冲突呢?
在 jQuery 中,针对 DOM
对象扩张的私人商品房数据可以用二个对象来表示,多个数据就接收那些指标的八个本性来表示。为了能够透过
DOM 对象找到那些扩张数据对象,而不会与其余现存的性质冲突,在 jQuery
中经过 expando 这一个常量表示扩充对象的属性名,那么些 expando
的值是总括出来的。而这几个天性的值正是用来找到扩大对象的键值。
比如,大家能够定义 expando 的值为 “jQuery1234” ,那么,我们得认为各个DOM 对象扩大那几个名字为 “jQuery1234”
的习性,那么些特性的值能够是一个键,比如为 1000。 在 jQuery 对象上的 cache
用来保存全数指标扩张的对象,这么些目的足以充作四个字典,属性名正是键值,所对应的值就是增加数据对象。
也正是说,在 jQuery 对象的 cache 上,将会有三个 1000
的分子,那些成员引用的目的正是 1000 号 DOM 对象的民用扩张对象。1000
号成员的私家数据将被存在在这里个指标上。 当二个 DOM
对象供给获得扩大数据的时候,首先通过对象的 expando
属性获得二个键值,然后通过那几个键值到 jQuery.cache
中赢得自身的增添对象,然后在增添对象上读写多少。 复制代码 代码如下: /// // 常用方法 function
now.getTime(State of Qatar; } // 扩展数据的属性名,动态变化,制止与已有些属性冲突 var
expando = “jQuery” + now(卡塔尔国, uuid = 0, windowData = {}; jQuery.cache =
{}; jQuery.expando = expando; // 数据管理,能够本着 DOM
对象保存个人的数额,能够读取保存的数额 jQuery.fn.data = function { //
读取 if { return jQuery.data; } else { // 设置 this.each { jQuery.data;
} State of Qatar; } } // 移除数据,删除保存在对象上的数据 jQuery.fn.removeData =
function { return this.each { jQuery.removeData } // 为因素保存数据
jQuery.data = function { // #1001 // 获得成分保存数据的键值 var id =
elem[expando], cache = jQuery.cache, thisCache; // 未有 id
的情事下,无法取值 if (!id && typeof name === “string” && data ===
undefined卡塔尔国 { return null; } // Compute a unique ID for the element //
为成分总括多个唯意气风发的键值 if { id = ++uuid; } // 如果未有保存过 if {
elem[expando] = id; // 在要素上保存键值 cache[id] = {}; // 在 cache
上开创三个目的保存元素对应的值 } // 获得此元素的多少对象 thisCache =
cache[id]; // Prevent overriding the named cache with undefined values
// 保存值 if { thisCache[name] = data; } // 重回对应的值 return typeof
name === “string” ? thisCache[name] : thisCache; } // 删除保存的多寡
jQuery.removeData = function { // #1042 var id = elem[expando]规律的模拟代码澳门太阳集团,数据部分。, cache
= jQuery.cache, thisCache = cache[id]; // If we want to remove a
specific section of the element’s data if { if { // Remove the section
of cache data delete thisCache[name]; // If we’ve removed all the
data, remove the element’s cache if (jQuery.isEmptyObject {
jQuery.removeData; } } // Otherwise, we want to remove all of the
element’s data } else { delete elem[jQuery.expando]; // Completely
remove the data cache delete cache[id]; } } // 检核对象是不是是空的
jQuery.isEmptyObject = function { //
遍历成分的性质,唯有要属性就回来假,不然重返真 for { return false; }
return true; } // 检查是还是不是是一个函数 jQuery.isFunction = function { var
s = toString.call; return toString.call === “[object Function]”; }
上边的台本可以保留依旧读取对象的恢弘数据。 复制代码 代码如下: // 数据操作 $.data(“name”,
“Hello, world.”卡塔尔(قطر‎; alert.data.removeData; alert.data;

上生机勃勃篇:jQuery 原理的比葫芦画瓢代码 -1 宗旨部分

在 jQuery 中,能够对每一个 DOM 对象保存个人的数量。

本条数据当然要通过质量来张开存取,不过,有三个属性怎么做吧?,要定义六特性子吗?,属性的名字叫什么啊?会不会与其余的习性有矛盾呢?

在 jQuery 中,针对 DOM
对象扩充的个人数据足以用叁个指标来表示,多少个数据就利用那么些指标的七个属性来代表。为了能够透过
DOM 对象找到这几个扩充数据对象,而不会与别的现成的属性冲突,在 jQuery
中通过 expando 这一个常量表示扩充对象的属性名,那么些 expando
的值是总计出来的。而以此个性的值正是用来找到扩大对象的键值。

譬喻,大家能够定义 expando 的值为 “jQuery1234” ,那么,大家得以为各种 DOM 对象扩张这么些名叫 “jQuery1234”
的性质,那几个天性的值能够是贰个键,举例为 1000。

在 jQuery 对象上的 cache
用来保存全部目的扩张的靶子,这一个目的能够作为叁个辞典,属性名正是键值,所对应的值正是扩展数据对象。

也正是说,在 jQuery 对象的 cache 上,将会有三个 1000
的分子,那个成员援引的靶子就是 1000 号 DOM 对象的私家增添对象。1000
号成员的私人住房数据将被存在在这里个指标上。

当二个 DOM 对象急需得到扩张数据的时候,首先通过对象的 expando
属性得到叁个键值,然后经过那几个键值到 jQuery.cache
中获得自个儿的强大对象,然后在强盛对象上读写多少。

澳门太阳集团,1 /// <reference path=”jQuery-core.js” />
2
3 // 常用方法
4 function now() {
5 return (new Date).getTime();
6 }
7
8 // 扩展数据的属性名,动态变化,制止与原来就有的属性冲突
9 var expando = “jQuery” + now(), uuid = 0, windowData = {};
10 jQuery.cache = {};
11 jQuery.expando = expando;
12
13 // 数据管理,能够本着 DOM 对象保存个人的数据,能够读取保存的数量
14 jQuery.fn.data = function (key, value) {
15
16 // 读取
17 if (value === undefined) {
18 return jQuery.data(this[0], key);
19 }
20 else { // 设置
21
22 this.each(
23 function () {
24 jQuery.data(this, key, value);
25 }
26 );
27 }
28 }
29 // 移除数据,删除保存在对象上的数额
30 jQuery.fn.removeData = function (key) {
31 return this.each(function () {
32 jQuery.removeData(this, key);
33 })
34 }
35
36
37 // 为因素保存数据
38 jQuery.data = function (elem, name, data) { // #1001
39
40 // 得到成分保存数据的键值
41 var id = elem[expando], cache = jQuery.cache, thisCache;
42
43 // 不曾 id 的情事下,不能够取值
44 if (!id && typeof name === “string” && data === undefined) {
45 return null;
46 }
47
48 // Compute a unique ID for the element
49 // 为要素总括一个唯风华正茂的键值
50 if (!id) {
51 id = ++uuid;
52 }
53
54 // 若无保存过
55 if (!cache[id]) {
56 elem[expando] = id; // 在要素上保留键值
57 cache[id] = {}; // 在 cache 上创设二个对象保存成分对应的值
58 }
59
60 // 拿到此成分的数额对象
61 thisCache = cache[id];
62
63 // Prevent overriding the named cache with undefined values
64 // 保存值
65 if (data !== undefined) {
66 thisCache[name] = data;
67 }
68
69 // 重临对应的值
70 return typeof name === “string” ? thisCache[name] : thisCache;
71
72 }
73
74 // 删除保存的数量
75 jQuery.removeData = function (elem, name) { // #1042
76
77 var id = elem[expando], cache = jQuery.cache, thisCache =
cache[id];
78
79 // If we want to remove a specific section of the element’s data
80 if (name) {
81 if (thisCache) {
82 // Remove the section of cache data
83 delete thisCache[name];
84
85 // If we’ve removed all the data, remove the element’s cache
86 if (jQuery.isEmptyObject(thisCache)) {
87 jQuery.removeData(elem);
88 }
89 }
90
91 // Otherwise, we want to remove all of the element’s data
92 } else {
93
94 delete elem[jQuery.expando];
95
96 // Completely remove the data cache
97 delete cache[id];
98 }
99 }
100
101 // 反省对象是还是不是是空的
102 jQuery.isEmptyObject = function (obj) {
103 // 遍历成分的习性,只有要属性就回来假,不然重回真
104 for (var name in obj) {
105 return false;
106 }
107 return true;
108
109 }
110
111 // 检查是或不是是三个函数
112 jQuery.isFunction = function (obj) {
113 var s = toString.call(obj);
114 return toString.call(obj) === “[object Function]”;
115 }
116

下边包车型客车剧本能够保存恐怕读取对象的恢弘数据。

1 // 数目操作
2 $(“#msg”).data(“name”, “Hello, world.”);
3 alert($(“#msg”).data(“name”));
4 $(“#msg”).removeData(“name”);
5 alert($(“#msg”).data(“name”));

原文:

jQuery 原理的模拟代码 -1 宗旨部分 在
jQuery 中,能够对每一个 DOM 对象保存个人的多寡。
那些数目当然要经过品质来进展存取,但…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图