[英]Javascript bind an call
我遇到了以下代碼。 試圖了解它到底在做什么。 似乎腳本文件被故意混淆了。
var d=Function.prototype.bind,
e=Function.prototype.call,
f=e.bind(d,e),
哪種翻譯成
var f = Function.prototype.call.bind(Function.prototype.bind, Function.prototype.call)
查看MDN文檔,bind接受傳遞給函數的其他參數。 這是否意味着每當使用變量f時,它將以Function.prototype.call作為第一個參數? 將“ this”設置為Function.prototype.bind有什么幫助?
使用Function.prototype.call
的正常方式如下:
functionName.call(thisvalue, arg1, arg2, arg3)
當call
方法被調用時,它就會被命名的函數functionName
為this
上下文(就像任何其他的方法調用一樣),並調用它。
在您的代碼中,我們使用bind()
創建一個新函數,該函數的this
上下文和第一個參數綁定到特定值。 該功能是Function.prototype.call
,它的this
方面是Function.prototype.bind
,它的第一個參數是Function.prototype.call
。 這樣做
x = f(something)
相當於打電話
x = Function.prototype.bind.call(Function.prototype.call, something)
這等效於:
x = Function.prototype.call.bind(something)
所以x
也是一個函數-它是帶有this
上下文綁定到`something'的call
方法。 所以打電話
x(1, 2, 3)
相當於
something.call(1, 2, 3)
我當然希望我做對了,它確實令人費解,就像Adventure迷宮般的曲折小段落一樣,各有不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.