问题标签 [function-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4610 浏览

javascript - 将“this”绑定到 TypeScript Lambda

假设我在 TypeScript 中有一个 lambda:

的值this变成window而不是调用对象。我真正想做的是:

但我不认为这是 TypeScript 中的一个选项。如何this在 TypeScript lambda 主体中覆盖?

0 投票
1 回答
392 浏览

javascript - 在不影响接收方的情况下使用绑定进行部分应用

如果我想部分应用我可以使用的函数bind,但似乎我必须影响函数的接收者(的第一个参数bind)。这个对吗?

bind我想在不影响接收器的情况下 执行部分应用程序。

0 投票
3 回答
2864 浏览

javascript - Function.prototype.bind.apply() 不能按预期工作

我有一个函数myfunc,希望将其作为单个数组而不是参数列表bind的特定this参数和其他参数(因为我将参数列表作为函数的参数,在其中执行此代码)。bind为此,我使用applyonbind如下:

这导致Uncaught TypeError: Bind must be called on a function.

我究竟做错了什么?您能否详细解释一下,当我运行此代码时发生了什么,因为现实似乎与我对此的看法相矛盾?

答案总结: 似乎它bind本身有它自己的this参数,它是函数,它被调用。例如,当你说myfunc.bind(args)bind'sthismyfunc

通过调用applybind我错误地将bind's this 分配给了“mythis”,这不是一个函数,bind也不能在其上调用。

所以,解决方案是使用

此外,如果您想立即调用绑定的 myfunc,您可以说:

但这还不够我的情况,因为我需要将绑定函数作为参数传递给addEventListener.

谢谢你们的帮助,伙计们!

0 投票
2 回答
68 浏览

python - itertools.product 函数创建产生意想不到的结果

我在理解以下代码段的结果时遇到了一些麻烦,我认为这是因为我对函数绑定感到困惑。为什么以下片段会产生不同的结果?

另一方面:

在我看来,它只是binding在每个隐式循环中抓取/使用/最后一个变量for进行计算,即使它为函数名称抓取了正确的变量。

关于导致这些结果的范围或函数定义或闭包(或其他),我缺少什么?

注意:如果我在这个问题上放置的任何标签是无关紧要的,请随时删除它们 - 我将它们全部放置是因为我不确定问题是什么。

0 投票
1 回答
190 浏览

javascript - .bind() 与事件处理程序

假设我有以下简化功能。

我意识到在这种特殊情况下绑定exthis有些多余,但是我怎样才能绑定data参数并仍然保持event参数不被破坏?

我似乎无法在任何地方找到答案。

0 投票
3 回答
14342 浏览

javascript - ES6 箭头函数和与 Function.prototype.bind 绑定的函数之间有什么区别(如果有的话)?

在我看来,在 ES6 中,以下两个函数几乎完全相同

最终结果似乎相同:箭头函数生成一个 JavaScript 函数对象,其上下文绑定到与创建它们的位置this相同的值。this

显然,在一般意义上,Function.prototype.bind它比箭头函数更灵活:它可以绑定到除 local 以外的值,并且它可以在任何时间点this绑定任何函数,可能在它最初创建很久之后。this但是,我不是在问它bind本身与箭头函数有何不同,我是在问箭头函数与立即调用bindwith有何不同this

ES6 中的这两种结构有什么不同吗?

0 投票
5 回答
16614 浏览

javascript - 在 JavaScript 事件回调中绑定“this”的正确方法?

我创建了一个名为 SearchBox 的类来处理搜索交互(延迟触发、按 Enter 键时搜索、在活动时阻止搜索、在搜索完成且文本已更改时同步结果等)。

所有的类方法都是原型方法,意味着可以通过this. 在下面的代码中,假设p是类的原型。

这不起作用,因为当 keypress 事件调用searchKeyPressed处理程序时,它不会在this. 我能想到的唯一解决方案是只有现代浏览器支持的解决方案,即将回调绑定到this,这实际上创建了一个新函数。由于它创建了一个新函数,因此我必须缓存它以便稍后将其删除,因为我必须将相同的引用off传递给我传递给on.

有没有比这更好的方法,或者这样可以吗?

我认为这可能jQuery.on会提供一种自动执行此事件绑定的方法,但它似乎绑定this到不同的事物,具体取决于它的调用方式。例如,当使用时on('eventname',instance.func)this是“currentTarget”(在冒泡术语中不一定是“目标”),而当使用时on('eventname','selector',instance.func)this是指匹配选择器的元素。在任何一种情况下,func运行都好像与 没有关系instance

0 投票
1 回答
39 浏览

javascript - Can you unbind a jQuery function that's bound to the document?

I want to prevent this function from working:

I've tried $(".filters").unbind("click"), but that's not working, I'm guessing because of how I trigger it in the first place?

0 投票
1 回答
663 浏览

javascript - 如何 curry jQuery 方法——哪个`this`值将传递 jQuery 对象?

如果我想使用创建一个 jQuery 函数Function.prototype.bind,即需要一个包装函数,this我应该提供哪个值?以下简单的示例似乎不起作用:

$.fnthis在这里争论是错误的选择。如果需要,它应该是什么,以便函数可以访问 jQuery 内部方法?

0 投票
1 回答
2116 浏览

javascript - ESLint 和 This-Bind 运算符

This -Bind 运算符是为 ES7 提供方便this的方法绑定语法的提议:

问题是,它仍处于ES 未来 (7) 版本的提案阶段,因此它尚未包含在标准中,因此不受 ESLint 支持,但仍可通过 tanspiling 使用(使用 Babel,fe)。

问题是,ESLint 是否有任何模块/插件/选项来支持函数绑定运算符(或整套 ES7 实验特性)语法?