js中call和apply的實現原理

2022-08-16 12:30:13 字數 671 閱讀 8229

實現call的思路: 

/* 還有就是call方法是放在function().prototype上的也就是建構函式才有的call方法

(我門可以檢視自己的方法的原型鏈上的也就是

方法名.__proto__==function.prototype 自己定義的建構函式通過原型鏈可以找到原型 function.prototype中就有call方法 )

那我門就在function.prototype中定義乙個自己的方法實現call的功能

*/function.prototype.mycall = function()

補充下:物件的隱式呼叫,就是在a.call(b)的時候,在call函式內部的this是指向a的(應為js中誰呼叫this就指向誰的)。

call的第乙個引數b是乙個我們想讓a函式內部屬性指向的物件,只能再通過隱式呼叫,把函式a宣告在b的乙個屬性中,也就是b.storagea =a ,

我們執行a(),也就是在執行b.storagea() 。把結果返回出去,就是實現了this.指向的變化了

實際應用

function.prototype.mycall = function() 

function person() ~$`)}}

function baby(name)

let a = new baby('inter')

js中call和apply用法

1 方法定義 call方法 語法 call thisobj arg1 arg2 argn 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒...

JS中apply和call的區別

聯絡 obj 這個物件將代替 function類裡this物件,也即 function類 函式 裡的this不在是指 function 本身,而是obj args 這個是陣列型別的引數,它將作為引數傳給function args arguments 結果是還是執行 function 類方法 函式 的...

js中的apply和call函式

主要我是要解決一下幾個問題 obj 這個物件將代替function類裡this物件 args 這個是陣列,它將作為引數傳給function args arguments function.call obj,param1 param2 paramn obj 這個物件將代替function類裡this物...