国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

jQuery 數(shù)據(jù)緩存data(name, value)詳解及實(shí)現(xiàn)

2024-05-06 14:11:59
字體:
供稿:網(wǎng)友
作為一名程序員,一提到“緩存”你很容易聯(lián)想到“客戶端(瀏覽器緩存)”和“服務(wù)器緩存”。客戶端緩存是存在瀏覽者電腦硬盤上的,即瀏覽器臨時(shí)文件夾,而服務(wù)器緩存是存在服務(wù)器內(nèi)存中,當(dāng)然在一些高級(jí)應(yīng)用場合也有專門的緩存服務(wù)器,甚至有利用數(shù)據(jù)庫進(jìn)行緩存的實(shí)現(xiàn)。當(dāng)然這些都不在本文的討論范圍,本文要討論的是最流行的JavaScript框架jQuery的數(shù)據(jù)緩存實(shí)現(xiàn)原理,這是jQuery1.2.3版開始加入的新功能。
一、 jQuery數(shù)據(jù)緩存的作用
jQuery數(shù)據(jù)緩存的作用在中文API中是這樣描述的:“用于在一個(gè)元素上存取數(shù)據(jù)而避免了循環(huán)引用的風(fēng)險(xiǎn)”。如何理解這句話呢,看看我下面的舉例,不知道合不合適,如果你有更好的例子可以告訴我。
(1) 存在循環(huán)引用風(fēng)險(xiǎn)的例子(注意getDataByName(name)方法中的for in語句):
代碼如下:
<a href="javascript:void(0);" onclick="showInfoByName(this.innerHTML);">Tom</a><br/>
<a href="javascript:void(0);" onclick="showInfoByName(this.innerHTML);">Mike</a>
<script type="text/javascript">
var userInfo = [
{
"name": "Tom",
"age": 21,
"phone": "020-12345678"
},
{
"name": "Mike",
"age": 23,
"phone": "020-87654321"
}];
function getDataByName(name)
{
for (var i in userInfo)
{
if (userInfo[i].name == name)
{
return userInfo[i];
break;
}
}
}
function showInfoByName(name)
{
var info = getDataByName(name);
alert('name:' + info.name + '/n' + 'age:' + info.age + '/n' + 'phone:' + info.phone);
}
</script>

(2) 優(yōu)化循環(huán)引用風(fēng)險(xiǎn)的例子(本例子其實(shí)與jQuery緩存實(shí)現(xiàn)原理差不多了,本例子重點(diǎn)在于改寫了userInfo這個(gè)JSON結(jié)構(gòu),使name與對象key直接對應(yīng)):
代碼如下:
<a href="javascript:void(0);" onclick="showInfoByName(this.innerHTML);">Tom</a><br/>
<a href="javascript:void(0);" onclick="showInfoByName(this.innerHTML);">Mike</a>
<script type="text/javascript">
var userInfo =
{
"Tom":
{
"name": "Tom",
"age": 21,
"phone": "020-12345678"
},
"Mike":
{
"name": "Mike",
"age": 23,
"phone": "020-87654321"
}
};
function showInfoByName(name)
{
var info = userInfo[name];
alert('name:' + info.name + '/n' + 'age:' + info.age + '/n' + 'phone:' + info.phone);
}
</script>

二、簡單實(shí)現(xiàn)jQuery設(shè)置數(shù)據(jù)緩存方法
jQuery數(shù)據(jù)緩存的實(shí)現(xiàn)其實(shí)是很簡單的,下面我來實(shí)現(xiàn)jQuery設(shè)置數(shù)據(jù)緩存方法,我讓代碼盡量的簡單,這有助于你更容易了解data的實(shí)現(xiàn)原理。函數(shù)與測試代碼如下:
代碼如下:
<div id="div1">div1</div><br/>
<div id="div2">div2</div>
<script type="text/javascript">
//cache對象結(jié)構(gòu)像這樣{"uuid1":{"name1":value1,"name2":value2},"uuid2":{"name1":value1,"name2":value2}},每個(gè)uuid對應(yīng)一個(gè)elem緩存數(shù)據(jù),每個(gè)緩存對象是可以由多個(gè)name/value對組成的,而value是可以是任何數(shù)據(jù)類型的,比如可以像這樣在elem下存一個(gè)JSON片段:$(elem).data('JSON':{"name":"Tom","age":23})
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 中宁县| 沙河市| 淮北市| 锦屏县| 上饶市| 马鞍山市| 临沧市| 汝阳县| 报价| 桓台县| 平和县| 建湖县| 九江市| 静安区| 玛多县| 五台县| 汤原县| 延安市| 天峨县| 庐江县| 修武县| 定边县| 双流县| 鄂伦春自治旗| 芒康县| 逊克县| 邳州市| 大足县| 松潘县| 久治县| 镇平县| 无锡市| 深州市| 女性| 新巴尔虎右旗| 平邑县| 茂名市| 肥乡县| 泰来县| 垦利县| 海兴县|