gpt4 book ai didi

javascript - 我可以从 JavaScript 中的绑定(bind)函数获取未绑定(bind)函数吗?

转载 作者:行者123 更新时间:2023-12-02 23:20:07 26 4
gpt4 key购买 nike

我正在使用 Function.prototype.bind 来研究柯里化(Currying)和其他技术。 .
在某些情况下更改函数范围(即 this 值)似乎非常有用。

但是it looks like you can't change the scope with bind一旦你已经这样做了:

function f = obj.method.bind(42); 
function g = obj.method.bind('Hi');

function f2 = f.bind('Hi'); // “this” is still 42

是否可以从绑定(bind)函数中检索原始未绑定(bind)函数?

最佳答案

什么是bind方法基本上做的是类似的事情(不完全是,因为参数被切片以排除上下文):

function bind(context) {
var self = this;
return function() {
self.apply(context, arguments);
}
}

所以基本上它返回另一个函数,该函数将使用给定的上下文和参数调用自身。如果你那么bind再次,您将绑定(bind)这个新创建的函数,就像 bind实现如下:

 function bind(context) {
var self = this;
return function() {
self.apply(context, arguments);
}.bind(otherContext);
}

但是,由于 bind 返回的内部函数充当闭包,其中原始上下文是第一个绑定(bind)的上下文 ( self ),因此该函数将真正执行的上下文是您的函数。

关于javascript - 我可以从 JavaScript 中的绑定(bind)函数获取未绑定(bind)函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10523080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com