js給對象動態(tài)添加、設(shè)置、刪除屬性名與屬性值實例代碼
1. 訪問對象屬性
js中訪問對象屬性一共有兩種方法:點獲取法和方括號獲取法。
let user = { // 一個對象
name: "John", // 鍵 "name",值 "John"
age: 30, // 鍵 "age",值 30。列表中的最后一個屬性應(yīng)以逗號結(jié)尾:便于我們添加、刪除和移動屬性
};
- 使用點符號訪問屬性值
alert( user.name ); // John - 使用方括號訪問屬性值
alert( user[name]); // John
注意: 如果我們遍歷一個對象,我們獲取屬性的順序是和屬性添加時的順序相同嗎?
簡短的回答是:“有特別的順序”:整數(shù)屬性會被進行排序,其他屬性則按照創(chuàng)建的順序顯示。
2. 刪除對象屬性
使用delete關(guān)鍵字刪除對象屬性
delete user.age; delete user[age];
3. 動態(tài)設(shè)置屬性
最常用的對象屬性獲取方法是點獲取法。
但是當(dāng)我們遇到需要給對象動態(tài)添加屬性和屬性值時,點獲取法好像就不方便了,尤其是我們不知道屬性名的時候更麻煩。這時候,方括號獲取法就派上用場了。
let order={
id:1,
name:'xxxx',
}
// 如果是直接給新屬性賦值
order['logisticsNo']='xxxx';
// 如果添加的屬性為[],則可以先創(chuàng)建屬性值為空數(shù)組
order['logisticsNo']=[];
order['logisticsNo'].push(data); //注意數(shù)組才有push,不然會報錯
// 也可以使用變量名
let key='logisticsNo';
order[key]=[];
order[key].push(data);
計算屬性
當(dāng)創(chuàng)建一個對象時,我們可以在對象字面量中使用方括號。這叫做 計算屬性。
let fruit = prompt("Which fruit to buy?", "apple");
let bag = {
[fruit]: 5, // 屬性名是從 fruit 變量中得到的
};
alert( bag.apple ); // 5 如果 fruit="apple"
計算屬性的含義很簡單:[fruit] 含義是屬性名應(yīng)該從 fruit 變量中獲取。
所以,如果一個用戶輸入 “apple”,bag 將變?yōu)?{apple: 5}。
本質(zhì)上,這跟下面的語法效果相同:
let fruit = prompt("Which fruit to buy?", "apple");
let bag = {};
// 從 fruit 變量中獲取值
bag[fruit] = 5;
我們可以在方括號中使用更復(fù)雜的表達式:
let fruit = 'apple';
let bag = {
[fruit + 'Computers']: 5 // bag.appleComputers = 5
};
屬性存在判斷: “in” 操作符
相比于其他語言,JavaScript 的對象有一個需要注意的特性:能夠被訪問任何屬性。即使屬性不存在也不會報錯!
讀取不存在的屬性只會得到 undefined。所以我們可以很容易地判斷一個屬性是否存在:
let user = {};
alert( user.noSuchProperty === undefined ); // true 意思是沒有這個屬性
in 的左邊必須是 屬性名。通常是一個帶引號的字符串。
let user = { name: "John", age: 30 };
alert( "age" in user ); // true,user.age 存在
alert( "blabla" in user ); // false,user.blabla 不存在。
推薦直接使用in來判斷對象的屬性是否存在。
“for…in” 循環(huán)
let user = {
name: "John",
age: 30,
isAdmin: true
};
for (let key in user) {
// keys
alert( key ); // name, age, isAdmin
// 屬性鍵的值
alert( user[key] ); // John, 30, true
}
1.檢查空對象
function isEmpty(obj) {
for (let key in obj) {
// 如果進到循環(huán)里面,說明有屬性。
return false;
}
return true;
}
2.對象屬性求和
let salaries = {
John: 100,
Ann: 160,
Pete: 130
};
let sum = 0;
for (let key in salaries) {
sum += salaries[key];
}
alert(sum); // 390
3.將數(shù)值屬性值都乘以 2
// 在調(diào)用之前
let menu = {
width: 200,
height: 300,
title: "My menu"
};
multiplyNumeric(menu);
// 調(diào)用函數(shù)之后
menu = {
width: 400,
height: 600,
title: "My menu"
};
function multiplyNumeric(obj) {
for (let key in obj) {
if (typeof obj[key] == 'number') {
obj[key] *= 2;
}
}
}
補充:括號表示法
這種方式類似于數(shù)組的寫法
const student = {
name: '張三',
age: 18,
action: function eat () {alert('我喜歡吃')}
}
// 括號表示法(屬性值要加引號)
student['name'];
student['age'];
student['action'](); // 調(diào)用方法需要在外面加括號另:這種方法個優(yōu)點:
我們想把傳遞過來的數(shù)據(jù)當(dāng)做對象字面量的屬性名可以用括號表示法,所以括號表示發(fā)可以動態(tài)的添加屬性名和內(nèi)容。
<input type="text" value="address">
<script>
const student ={};
let ipt = document.querySelector('input');
let a= ipt.value;
// 用點表示法不能將輸入框中的值當(dāng)做屬性名來設(shè)置
student.a = '北京'; // 存入的是a: '北京'
// 用括號表示法可以
student[a] = '北京'; // 存入的是 address: '北京'
// ↑動態(tài)的將輸入框中的內(nèi)容作為這個對象的值
</script>
總結(jié)
到此這篇關(guān)于js給對象動態(tài)添加、設(shè)置、刪除屬性名與屬性值的文章就介紹到這了,更多相關(guān)js對象動態(tài)添加設(shè)置刪除屬性名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
TypeScript遍歷Array的方法(for,forEach,every)
本文主要介紹了TypeScript遍歷Array的方法(for,forEach,every),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
微信小程序?qū)崿F(xiàn)簡單手寫簽名組件的方法實例
在使用微信的時候,為方便我們發(fā)送文件可以直接在上面進行手寫簽名,這篇文章主要給大家介紹了關(guān)于利用微信小程序?qū)崿F(xiàn)簡單手寫簽名組件的相關(guān)資料,需要的朋友可以參考下2021-07-07
IOS中safari下的select下拉菜單文字過長不換行的解決方法
今天在項目開發(fā)中遇到一個問題safari下的select下拉菜單文字過長不換行問題,最終我用<optgroup>標(biāo)簽解決此問題,下面小編把實現(xiàn)思路分享給大家供大家參考2016-09-09
微信小程序?qū)崿F(xiàn)用戶登錄模塊服務(wù)器搭建
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)用戶登錄模塊服務(wù)器搭建,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
JS在一定時間內(nèi)跳轉(zhuǎn)頁面及各種刷新頁面的實現(xiàn)方法
這篇文章主要介紹了JS在一定時間內(nèi)跳轉(zhuǎn)頁面及各種刷新頁面的實現(xiàn)方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-05-05
js Html結(jié)構(gòu)轉(zhuǎn)字符串形式顯示代碼
js Html結(jié)構(gòu)轉(zhuǎn)字符串形式顯示代碼,需要的朋友可以參考下。2011-11-11

