簡體   English   中英

JavaScript綁定通話

[英]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方法被調用時,它就會被命名的函數functionNamethis上下文(就像任何其他的方法調用一樣),並調用它。

在您的代碼中,我們使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM