js 對(duì)象使用的小技巧實(shí)例分析
本文實(shí)例講述了js 對(duì)象使用的小技巧。分享給大家供大家參考,具體如下:
js中中,Object,Array ,Function 等都屬于引用類型,他們的變量名都是指向?qū)ο蟮闹羔槨?/p>
這樣就有一個(gè)好處,當(dāng)處理一個(gè)復(fù)雜json樹(shù)的時(shí)候,想要單獨(dú)改變其中某一個(gè)子對(duì)象屬性時(shí),不需要根據(jù)對(duì)象id遍歷查找到這個(gè)對(duì)象了,而是可以直接通過(guò)事件方式將這個(gè)對(duì)象通過(guò)參數(shù)的方式賦值給一個(gè)專屬變量,這個(gè)變量就指向這個(gè)對(duì)象,這樣就可以隨意改變對(duì)象屬性了。改變這個(gè)變量對(duì)應(yīng)的對(duì)象,整個(gè)json樹(shù)中的這個(gè)對(duì)象也被相應(yīng)的改變。
下面舉個(gè)栗子,有點(diǎn)類似于雙向綁定,點(diǎn)擊哪個(gè)對(duì)象就可以單獨(dú)修改這個(gè)對(duì)象,修改后會(huì)在json樹(shù)中更新數(shù)據(jù)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div >
<ul id="classmates">
</ul>
<div class="edit">
<span>姓名:</span>
<input type="text" value="" name="name"/>
<br />
<span>年齡:</span>
<input type="text" value="" name="age"/>
</div>
</div>
<script type="text/javascript">
//保存選中的同學(xué)
var classmate={
name:"",
age:""
}
//同學(xué)列表
var arr=[
{
name:"小明",
age:22
},
{
name:"小黑",
age:23
},
{
name:"小紅",
age:24
},
{
name:"小白",
age:25
}
];
var nameNode=document.querySelector("input[name='name']");
var ageNode=document.querySelector("input[name='age']");
nameNode.addEventListener("keyup",function(){
classmate.name=nameNode.value;
update()
//console.log(classmate)
})
ageNode.addEventListener("keyup",function(){
classmate.age=ageNode.value;
update()
})
//進(jìn)行雙向綁定
Object.defineProperty(classmate,'name',{
get:function(){
return classmate['name']
},
set:function(val){
classmate['name'] = val;
}
})
Object.defineProperty(classmate,'age',{
get:function(){
return classmate['age']
},
set:function(val){
classmate['age'] = val;
}
})
//重繪ul列表
function update(){
document.querySelector("#classmates").innerHTML="";
for(var i=0;i<arr.length;i++){
var classmate=arr[i];
var li="<li>姓名:"+classmate.name + ";年齡:"+classmate.age +"</li>";
var liNode=parseElement(li);
liNode.addEventListener("click",showClassmate(classmate))
document.querySelector("#classmates").appendChild(liNode)
}
}
update()
//點(diǎn)擊同學(xué)
function showClassmate(data){
return function(){
classmate=data;
nameNode.value=classmate.name;
ageNode.value=classmate.age;
}
}
//將字符串變成node對(duì)象
function parseElement(htmlString){
return new DOMParser().parseFromString(htmlString,'text/html').body.childNodes[0]
}
</script>
</body>
</html>
這里面的json數(shù)據(jù)較簡(jiǎn)單,如果面對(duì)復(fù)雜的多層關(guān)系樹(shù),通過(guò)這種方式修改數(shù)據(jù)會(huì)很方便
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JS利用map整合雙數(shù)組的小技巧分享
- JavaScript的一些小技巧分享
- 11個(gè)Javascript小技巧幫你提升代碼質(zhì)量(小結(jié))
- 9個(gè)JavaScript日常開(kāi)發(fā)小技巧
- JavaScript編碼小技巧分享
- JavaScript前端開(kāi)發(fā)時(shí)數(shù)值運(yùn)算的小技巧
- 處理JavaScript值為undefined的7個(gè)小技巧
- JS 邏輯判斷不要只知道用 if-else 和 switch條件判斷(小技巧)
- javascript json對(duì)象小技巧之鍵名作為變量用法分析
- JavaScript中的一些實(shí)用小技巧總結(jié)
- JavaScript實(shí)用代碼小技巧
- JS 中可以提升幸福度的小技巧(可以識(shí)別更多另類寫(xiě)法)
- 讓你5分鐘掌握9個(gè)JavaScript小技巧
- Spark SQL操作JSON字段的小技巧
- JavaScript小技巧帶你提升你的代碼技能
相關(guān)文章
微信小程序 flexbox layout快速實(shí)現(xiàn)基本布局的解決方案
flexbox layout 彈性盒子布局。彈性盒子可以快速的對(duì)小程序進(jìn)行布局。這篇文章主要介紹了微信小程序 flexbox layout快速實(shí)現(xiàn)基本布局的方法,需要的朋友可以參考下2020-03-03
TypeScript環(huán)境搭建并且部署到VSCode的詳細(xì)步驟
本文給大家介紹TypeScript環(huán)境搭建并且部署到VSCode的詳細(xì)步驟,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-11-11
JavaScript反彈動(dòng)畫(huà)效果的實(shí)現(xiàn)代碼
本文通過(guò)實(shí)例代碼給大家介紹了js反彈動(dòng)畫(huà)效果的實(shí)現(xiàn)代碼,需要的朋友參考下吧2017-07-07
js實(shí)現(xiàn)滑動(dòng)到頁(yè)面底部自動(dòng)加載更多功能
本文主要分享了js實(shí)現(xiàn)滑動(dòng)到頁(yè)面底部自動(dòng)加載更多功能的代碼。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
JavaScript中內(nèi)存泄漏的幾種情況總結(jié)
在JavaScript中,內(nèi)存泄漏通常是由于變量、對(duì)象、閉包、事件監(jiān)聽(tīng)器等長(zhǎng)期存在而沒(méi)有被釋放引起的。本文就來(lái)和大家總結(jié)一下常見(jiàn)的幾種情況以及解決方法吧2023-05-05
JavaScript中的普通函數(shù)與構(gòu)造函數(shù)比較
這篇文章主要介紹了JavaScript中的普通函數(shù)與構(gòu)造函數(shù)比較,需要的朋友可以參考下2015-04-04
JS+CSS 制作的超級(jí)簡(jiǎn)單的下拉菜單附圖
下拉菜單想必大家都有見(jiàn)到過(guò)吧,在本文將為大家介紹個(gè)不錯(cuò)的示例,超簡(jiǎn)單的,大家可以參考下哦2013-11-11

