面試總結(1)call和apply的區別。

2021-09-25 03:38:38 字數 849 閱讀 8038

介紹:

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...