1. 程式人生 > 其它 >實現call、apply 及 bind 函式

實現call、apply 及 bind 函式

今日學習內容:

(1)call 函式的實現步驟:

    • 判斷呼叫物件是否為函式,即使是定義在函式的原型上的,但是可能出現使用 call 等方式呼叫的情況。
    • 判斷傳入上下文物件是否存在,如果不存在,則設定為 window 。
    • 處理傳入的引數,擷取第一個引數後的所有引數。
    • 將函式作為上下文物件的一個屬性。
    • 使用上下文物件來呼叫這個方法,並儲存返回結果。
    • 刪除剛才新增的屬性。
    • 返回結果。

(2)apply 函式的實現步驟:

    • 判斷呼叫物件是否為函式,即使是定義在函式的原型上的,但是可能出現使用 call 等方式呼叫的情況。
    • 判斷傳入上下文物件是否存在,如果不存在,則設定為 window 。
    • 將函式作為上下文物件的一個屬性。
    • 判斷引數值是否傳入
    • 使用上下文物件來呼叫這個方法,並儲存返回結果。
    • 刪除剛才新增的屬性
    • 返回結果
(3)bind 函式的實現步驟:
  • 判斷呼叫物件是否為函式,即使是定義在函式的原型上的,但是可能出現使用 call 等方式呼叫的情況。
  • 儲存當前函式的引用,獲取其餘傳入引數值。
  • 建立一個函式返回
  • 函式內部使用 apply 來繫結函式呼叫,需要判斷函式作為建構函式的情況,這個時候需要傳入當前函式的 this 給 apply 呼叫,其餘情況都傳入指定的上下文物件。

作者:CUGGZ
連結:https://juejin.cn/post/6941194115392634888
來源:稀土掘金