iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
Modern Web

30天入門JavaScript系列 第 11

【Day 11】物件(一):物件簡介

  • 分享至 

  • xImage
  •  

壓底線

用變數可以存單個值,使用陣列可以存連續的值,
但如果今天不是只想記每天花的錢,還想記下天氣、三餐時該怎麼作

//把每天各種東西分開存
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()方法,可以用存取屬性一樣的方式來調用。


今天只講了為什麼要用物件跟最最基本的語法,目前還是手動一個一個建立物件,
想利用好物件來寫實作,還有很多東西要理解,請期待鐵人賽後半(希望那時候還能撐住ˊ_>ˋ)


上一篇
【Day 10】函式(二):讓函式接受輸入值
下一篇
【Day 12】undeclared、let、const
系列文
30天入門JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言