function.prototype.mycall = function(context, ...args)
let fnsymbol = symbol()
context[fnsymbol] = this
let fn = context[fnsymbol] (...args)
delete context[fnsymbol]
return fn
}
1,為傳入的context擴充套件乙個屬性,將原函式指向這個屬性2,將context之外的所有引數全部傳遞給這個新屬性,並將執行結果返回。// 判斷是否是undefined和null
if (typeof context === 'undefined' || context === null)
let fnsymbol = symbol()
context[fnsymbol] = this
let fn = context[fnsymbol] (...args)
return fn}
思路和call是一樣的只是傳參不同方式而已
手寫Vuex原始碼
vuex是基於vue的響應式原理基礎,所以無法拿出來單獨使用,必須在vue的基礎之上使用。main.js 1 import store form store 引入乙個store檔案2 3new vue store.js 1 import vuex from vuex 2 3vue.use vuex ...
手寫bind原始碼
三個方法的相同點 目標函式被呼叫時,改變this的指向的值 三個方法都是函式的方法,掛在在function.prototype上 不同點 目標函式呼叫bind後,不會立即執行,而是返回乙個新的函式,呼叫新函式才會執行目標函式 自定義乙個類似於bind函式的函式,將其掛載到函式function上面,然...
手寫 call apply 及 bind 函式
function.prototype.mycall function context context context window context.fn this 建立fn屬性,並將值設定為需要呼叫的函式 const args arguments slice 1 因為call可以傳入多個引數作為呼叫...