介紹:
1.相同點:改變this的指向。
2.區別:傳值的方式不一樣。
call(obj,arg1,arg2,arg3) 通過呼叫call 方法,在傳第乙個引數的時候,函式裡的this指向第乙個引數。從第二引數起依次傳入給函式的引數值。
call實現方法:
過程思考:1.首先是所有的函式都可以呼叫call,說明call是函式原型上的方法,所有例項都可以呼叫,即function.prototype.call.
1.1:在call方法裡獲取呼叫call()函式。
1.2如果第乙個引數沒有傳入,那麼預設指向window/global
1.3傳入的call的第乙個引數是this指向的物件,根據隱式繫結的規則。我們知道obj.foo(),foo()中的this指向obj;因此我們可以obj.func(...args)
1.4執行返回結果。
上**:
function.prototype.call = function()
thisarg.func = this;
let result = thisarg.func(...args);
delete thisarg.func;
return result;
}
let result;
if(!thisarg)
thisarg.func = this;
if(!rest)else
delete thisarg.func;
return result;}
我要懂系列1 call和apply
fn.call isthis,arg1,arg2,相同點 改變 this 指向 可以傳參 立即呼叫 區別 模擬實現 function.prototype.calllike function isthis 傳遞的 isthis 如果是 undefined 或者 null,那麼 this 就是 wind...
1 Call的基本知識
call的基本知識 call就是平時我們常用的通話功能,最基本的就是來電incomingcall,撥打 outgoingcall,一般來說撥打一方成為主叫方,接聽方為被叫方。call模組常用的一些名詞有 dialingcall 撥打一路 對方尚未接聽,主叫方等待被交接聽的時候的狀態即為dialing...
apply和call的用法
應用某一物件的乙個方法,用另乙個物件替換當前物件。引數 thisobj 可選項。將被用作當前物件的物件。argarray 可選項。將被傳遞給該函式的引數陣列。說明 如果 argarray 不是乙個有效的陣列或者不是arguments物件,那麼將導致乙個 typeerror。如果沒有提供 argarr...