###### tags: `ALPHACampWeek1` 物件操作 === typeof判斷型別:這個真的很好用 --- if(typeof(performance[person]) ==='number'){ sum+=performance[person] } 點記法與標記法 --- // dot notation myPhone.name // 'myPhone' // bracket notation myPhone['name'] // 'myPhone' 列舉出所有的值:for-in 迴圈 --- for (let key in myPhone) { console.log(myPhone[key]) } 一口氣取得資料 --- 取出所有的 key 值 - Object.keys() 取出所有的 value - Object.values() 取出所有的 pair - Object.entries() 物件導向程式設計 --- const user = { name: ['Peter', 'Lee'], gender: 'Male', age: 41, greet: function () { console.log(`Hello! I am ${this.name[0]}.`) }, run: function () { console.log('run!')} } - 呼叫 user.greet() // Hello! I am Peter. user.run() // run! 直接將物件當參數 --- 如果我現在想要寫一支函式 showDetail() 來印出 user 的所有屬性,以下的方法看起來蠻笨的: function showDetail(name, gender, age) { console.log(`${name[0]} ${name[1]}`) console.log(gender) console.log(age) } showDetail(user.name, user.gender, user.age) --- 更好的方式是直接將物件傳給函式: function showDetail(user) { console.log(`${user.name[0]} ${user.name[1]}`) console.log(user.gender) console.log(user.age) } showDetail(user) 甚至能直接用for-in判斷物件是否為function function showDetail (user) { for (let prop in user) { if (typeof user[prop] !== 'function') { console.log(user[prop]) } } } showDetail(user) RPG要這樣寫 --- function createPlayer (name, hp, mp) { return { name: name, hp: hp, mp: mp } } const player1 = createPlayer('Magician', 30, 100) const player2 = createPlayer('Warrior', 100, 30) console.log(player1) // {name: "Magician", hp: 30, mp: 100} console.log(player2) // {name: "Warrior", hp: 100, mp: 30} - 會比這樣寫來的好 當我們需要產生很多個格式相同的物件時,以往我們可能會這樣做: player1 = { name: 'Magician', hp: 30, mp: 100 } player2 = { name: 'Warrior', hp: 100, mp: 30 } console.log(player1) // {name: "Magician", hp: 30, mp: 100} console.log(player2) // {name: "Warrior", hp: 100, mp: 30}