手寫call方法

2022-06-07 16:57:09 字數 657 閱讀 2755

關鍵字: call, function.prototype.call

自己來實現乙個call方法。

語法:fn.call([context],[arg1]....);

call幹了些啥?

繫結this到第乙個實參

執行函式並返回結果

(function()

result = context.$fn(...args);

// 用完後就刪除

delete context.$fn;

return result;

} // 擴充套件到function原型上去

function.prototype.mycall = call;

})();

// 00-------------------------測試**--------------------

let obj =

window.name = "window"

function fn()

fn(); // => this:window

// 使用自己實現的call=>mycall

fn.mycall(obj) // => this:obj

/** window

obj*/

以上實現的缺點:

手寫call和apply方法實現

call var name flten var obj function fn a,b,c function.prototype.mycall function obj console.log args 最重要的一步!說明了兩個問題 1.mycall內部的this是指向呼叫者fn函式 物件的 2.o...

apply 方法和call 方法

obj.func.call obj1 是將obj1看做obj,呼叫func方法,將第乙個引數看做函式呼叫的物件,可以看做,將obj的方法給obj1使用 在函式體內this的值就是指向這個呼叫者,也就是第乙個引數,剩餘的引數都是需要傳遞給函式的值 例如 function add a,b return ...

魔術方法 call 和

php 5.3 後新增了 call 與 callstatic 魔法方法。call 當要呼叫的方法不存在或許可權不足時,會自動呼叫 call 方法。callstatic 當呼叫的靜態方法不存在或許可權不足時,會自動呼叫 callstatic方法。call funcname,arguments call...