前端高階 實現call方法

2021-09-23 18:54:24 字數 589 閱讀 8444

call改變this指向的思考

var age = 13;

function test()

test()

var myobj =

test.call(myobj) //22

思考一

test函式為什麼可以呼叫call方法?

test是建構函式物件,所以是函式也是物件

test沒有call方法,那麼就順著原型鏈網上查詢,發現

test._proto_ = function.prototyp

而function.prototyp有call方法,於是呼叫call方法

function.prototype.mycall = function(obj)

obj.fn(...newargs)

delete obj.fn // 使用完以後,刪除新增的屬性

}var age = 13;

function test()

test()

var myobj =

test.mycall(myobj) // 22

js高階高階 手動實現call 函式

首先看下原生的js的call var obj var obj2 console.log obj.getname.call obj2,hello,everyone,i am hello,everyone,i am evan you call 做了什麼?1 將呼叫call的函式的this指向call函式...

用 call 實現方法過載

今天在網上發現了一片好文章,介紹 call 方法。依靠這個方法可以實現方法過載,這是找了好久的東西了。發在這裡,算作筆記。php5 的物件新增了乙個專用方法 call 這個方法用來監視乙個物件中的其它方法。如果你試著呼叫乙個物件中不存在的方法,call 方法將會被自動呼叫。例七 call class...

php 使用 call實現鉤子方法

我有乙個大膽的想法,就是在某某方法執行前與執行後會自動執行某些函式,實現如下 class hook private function invoker name,arguments public function call name,arguments class other public funct...