[JavaScript] 內建的 call() 函式

在 JavaScript 中,所有的函式都屬於物件方法(Object Methods),如果一個函式並不屬於 JavaScript 的物件中的話,那都會隸屬於全域物件中的方法(global object)。而內建的 call() 函式,可將一個物件當作參數,代入 call() 函式之後,供不同的函式使用。

call() 函式與 apply() 函式的差異僅在於代入參數的不同,call() 後面的參數是使用一個一個的方式來代入,較為不方便。apply() 函式可參考 [JavaScript] 內建的 apply() 函式

定義

讓一個自訂的函式,透過 call() 函式,代入物件,自訂的函式,就可透過 this 關鍵字去取得代入物件的屬性。
什麼意思呢?直接看以下的範例

範例 1

function fullName(){
  return this.firstName + " " + this.lastName;
}
var person1 = {
  firstName:"John",
  lastName: "Doe",
};
var get_full_name = fullName.call(person1); // get_full_name 的值就會是 John Doe

範例 2

call() 方法的第一個參數為物件,後面也可以再帶入其它參數:

function fullName(city){
  return this.firstName + " " + this.lastName + " in " + city;
}
var person1 = {
  firstName:"John",
  lastName: "Doe",
};
var get_full_name = fullName.call(person1, "Taiwan"); // get_full_name 的值就會是 John Doe in Taiwan

您可在此處留言

avatar

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

  Subscribe  
Notify of