壓底線
用變數可以存單個值,使用陣列可以存連續的值,
但如果今天不是只想記每天花的錢,還想記下天氣、三餐時該怎麼作
//把每天各種東西分開存
let expense202009 = [
/*每天的花費*/
];
let weather202009 = [
/*每天的天氣*/
];
let breakfast202009 = [
/*每天的早餐*/
];
//或著用陣列內陣列
let diary202009=[[花費,天氣,早餐],[花費,天氣,早餐],[花費,天氣,早餐]/*以下略*/]
...用這兩種方式都不是很理想,
我們會希望相關的值都能包在一起,而且有明確的查詢方式而不是用索引,
這時候就能使用物件(object)
let emptyObject = {}; //建立一個空物件
let diary20200901 = {
expense: 200,
weather: '晴朗,午後有雷陣雨',
breakfast: '鮪魚蛋餅',
};//建立一個物件
物件內會有屬性
(變數)跟方法
(函式),屬性指得是key
(鍵)跟value
(值)的組合,
diary20200901裡面有三個屬性,第一個屬性的key
是expense,value
是200,
鍵的型別是字串(就算不是合法變數名都可以)。
想讀取物件某屬性的值時:物件.屬性的鍵
//例如
console.log(diary20200901.expense);//200
diary20200901.expense = 500; //可以直接修改值
console.log(diary20200901.expense); //500
diary20200901.dinner = '便當'; //也能直接加入新的屬性
console.log(diary20200901.dinner);//便當
從上面看到在物件名稱後面加個.
可以很方便的存取屬性,
但這個方式有個問題,當屬性的鍵不是合法的變數名時不能使用。
這時候可以使用[]
來存取值
let aObject = {
123: 456,
'A-B': 789,
};
//console.log(aObject.123);//錯誤
//console.log(aObject.A-B);// 會被當成aObject.A - B 產生錯誤
console.log(aObject[123]); //456
console.log(aObject['A-B']); //789
物件內的函式被稱作方法(method)
let cat = {
color: 'black',
cry: function (){console.log('喵');}
};
cat.cry(); //喵
cat['cry']();//喵
在cat這個物件建立了cry()
方法,可以用存取屬性一樣的方式來調用。
今天只講了為什麼要用物件跟最最基本的語法,目前還是手動一個一個建立物件,
想利用好物件來寫實作,還有很多東西要理解,請期待鐵人賽後半(希望那時候還能撐住ˊ_>ˋ)