想像一個人有姓名、年齡、身高、體重,如果都用獨立變數會變成這樣:
let name = '小明';
let age = 25;
let height = 170;
let weight = 65;
這樣雜亂又不好管理,物件(object) 就是為了解決這種需求:把一組相關資料和對這些資料的操作(方法)放在同一個地方就可以解決這個問題,讓我們來試試看吧!
最基本的寫法是用 {} 包起來,裡面用「屬性: 值」:
const person = {
name: '小明',
age: 25,
height: 170,
weight: 65
};
console.log(person.name); // '小明'
console.log(person['age']); // 25
用 . 或 [] 都可以存取屬性。
物件是動態的,可以後加屬性,也可以改值
person.job = '工程師'; // 新增屬性
person.age = 26; // 修改屬性
delete person.height; // 刪除屬性
console.log(person);
像這樣就可以改變屬性囉
物件裡也可以放函式,我們把這個函式稱做「方法」,像這樣
範例:
const person = {
name: '小明',
age: 25,
greet: function() {
console.log('嗨,我是 ' + this.name);
}
};
person.greet(); // 嗨,我是 小明
在範例裡用到的this
指的是「這個物件自己」
物件裡也可以放陣列或其他物件,組合出更複雜的資料結構:
const student = {
name: '小美',
scores: {
math: 90,
english: 85
},
hobbies: ['畫畫', '看書']
};
console.log(student.scores.math); // 90
console.log(student.hobbies[0]); // 畫畫
想要一次看完所有屬性可以用 for...in:
for (let key in person) {
console.log(key + ': ' + person[key]);
}
小練習
學完了物件之後,做個練習,把昨天的 BMI 計算做成物件的方法
const person = {
name: '小明',
height: 170,
weight: 65,
calcBMI: function() {
return this.weight / ((this.height / 100) ** 2);
}
};
console.log(person.name + ' 的 BMI:' + person.calcBMI());
那今天就到此為止啦,我們明天再見!