call()
方法使用乙個指定的this
值和單獨給出的乙個或多個引數來呼叫乙個函式。
var obj =
}window.a =
100var b = obj.b;b(
)// 100
b.call
(obj)
// 1
function.call(thisarg, arg1, arg2, …)thisarg
可選的。在 function 函式執行時使用的 this 值。請注意,this可能不是該方法看到的實際值:如果這個函式處於非嚴格模式下,則指定為 null 或 undefined 時會自動替換為指向全域性物件,原始值會被包裝。
var obj =
}window.a =
100var b = obj.b;
b.call
(null
)// 100
arg1, arg2, …
指定的引數列表。
function.prototype.
mycall
=function
mycall
(...args)
else
return
this
}
var obj = object(args[0])
使用 object 建構函式建立乙個物件包裝器。當以非建構函式形式被呼叫時,object 等同於 new object()。
obj 表示函式執行時使用的 this 值(傳入的第乙個引數),如果基本資料型別會先轉換成引用資料型別。因為 this 值必須是物件的形式。
obj 表示函式執行時使用的 this 值(傳入的第乙個引數)。fn 是定義在執行時使用的 this 值上的乙個屬性。this 表示需要改變 this 指向的函式
關於__proto__
這個連線存在於例項與建構函式的原型物件之間,那麼有人會問為什麼要設定在__proto__
上,而不設定在例項的prototype
上,因為有可能是普通物件或者是函式,普通物件是沒有prototype
屬性的。
通過執行時使用的 this 值來呼叫 fn 函式。那麼 fn 函式裡面的 this 就自然是執行時使用的 this 值(傳入的第乙個引數)。
ret和call的原理
1.ret 指令用棧中的資料,修改ip的內容,從而實現近轉移 cpu執行ret指令時,進行下面兩步操作 1 ip ss 16 sp 使用棧頂元素修改ip實現跳轉 2 sp sp 2 2.retf 用棧中的資料,修改cs和ip的內容,從而實現遠轉移 cpu執行retf指令時,進行下面四步操作 1 ip...
call 和 apply的使用
call 改變this指向 function people function man name,age var people new people var man new man 小明 25 people.show 今年 0 歲 people.show.call man 小明 今年 25 歲 繼承 ...
call的實現原理
下面我們來看乙個例子 let body document.body let obj function func x,y body.nclick func和body.click func 的區別bind原理和思想 執行bind bind中的this是要操作的函式 返回乙個匿名函式給事件繫結或者其它的內...