Function.bind 是什麼?

如同字面上的含義 bind 就是綁定,那到底綁定什麼呢?我們先看一下它的定義:

someMethod.bind(thisArg[, arg1[, arg2[, ...]]])
  • thisArg: 呼叫 someMethod 傳進去當作 this 的值。

看出來了嗎?簡單的說就是當你呼叫 someMethod 時,綁定 someMethod 內部的 this 到你指定的物件上 (thisArg)。

Example

const name = "Hyweb"
const club = {
  name: "R00",
  getName: function () {
    return this.name
  }
}

const getClubName = club.getName

// show `hyweb`
console.log(getClubName())

// show `R00`
console.log(getClubName.bind(club)())

Reference