關鍵字: 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...