← Back to list

物件與函式

屬性(property):靜態的資料,用於描述物件的狀態;

harry · 2022-04-01 06:17 · 0 claps · 5.3 min read
#物件 #函式
Open on Medium ↗

物件與函式

  • 屬性(property):靜態的資料,用於描述物件的狀態;
  • 方法(method):物件的功能,或說物件的行為;

物件中的this代表是誰呼叫這個函式

直接把物件傳給函式

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迴圈(利用typeOf !=='function' 過濾掉function):

function showDetail (user) {
  for (let prop in user) {
    if (typeof user[prop] !== 'function') {
      console.log(user[prop])
    }
  }
}
showDetail(user)

把物件傳給回傳值

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}

創建一個遊戲角色:

把物件當成函式的回傳值

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}

在javascript裡面常見的場景,〔函式可以當成值〕

  • 存進變數
  • 當成物件屬性
  • 當成另一個函式的回傳值
  • 當成另一個函式的參數

把函式放進變數:

簡單的函式:

function greet(name) {
  return `Hi, ${name}`
}

把函式當成值,放進變數

const greet = function (name) {
  return `Hi, ${name}`
}

但是結果是一樣的,greet('peter') // hi, peter

把函式放成物件屬性:

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.

當成另一個函式的回傳值:

當成另一個函式的參數:

function game () {
  console.log("Let's play game!")
  return 'I am happy!'
}
//增加這個函式
function study(){
  console.log("Let's go to school.")
  return 'I am tired.'
}
//修改這個函式
function breakfast (callback) {
  console.log(`I finished my breakfast.`)
  return callback() 
}
//呼叫時才決定吃完早餐要去讀書
const today = breakfast(study)
console.log(today)

匿名函式:

function game () {
  console.log("Let's play game!")
  return 'I am happy!'
}
// 註解起來
// function study(){
//   console.log("Let's go to school.")
//   return 'I am tired.'
// }
function breakfast (callback) {
  console.log(`I finished my breakfast.`)
  return callback() 
}
//直接把匿名函式傳入,效果相同
const today = breakfast(function (){
  console.log("Let's go to school.")
  return 'I am tired.'
})
console.log(today)


메타데이터
post_id
55c5d9c78c81
slug
物件與函式-55c5d9c78c81
url
https://medium.com/@paddy7328307/%E7%89%A9%E4%BB%B6%E8%88%87%E5%87%BD%E5%BC%8F-55c5d9c78c81
canonical_url
https://medium.com/@paddy7328307/%E7%89%A9%E4%BB%B6%E8%88%87%E5%87%BD%E5%BC%8F-55c5d9c78c81
author_url
https://medium.com/@paddy7328307
status
ok
fetched_at
2026-07-27 07:49:50