问题标签 [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.
javascript - 将“this”绑定到 TypeScript Lambda
假设我在 TypeScript 中有一个 lambda:
的值this
变成window
而不是调用对象。我真正想做的是:
但我不认为这是 TypeScript 中的一个选项。如何this
在 TypeScript lambda 主体中覆盖?
javascript - 在不影响接收方的情况下使用绑定进行部分应用
如果我想部分应用我可以使用的函数bind
,但似乎我必须影响函数的接收者(的第一个参数bind
)。这个对吗?
bind
我想在不影响接收器的情况下 执行部分应用程序。
javascript - Function.prototype.bind.apply() 不能按预期工作
我有一个函数myfunc
,希望将其作为单个数组而不是参数列表bind
的特定this
参数和其他参数(因为我将参数列表作为函数的参数,在其中执行此代码)。bind
为此,我使用apply
onbind
如下:
这导致Uncaught TypeError: Bind must be called on a function
.
我究竟做错了什么?您能否详细解释一下,当我运行此代码时发生了什么,因为现实似乎与我对此的看法相矛盾?
答案总结:
似乎它bind
本身有它自己的this
参数,它是函数,它被调用。例如,当你说myfunc.bind(args)
,bind
'sthis
是myfunc
。
通过调用apply
,bind
我错误地将bind
's this 分配给了“mythis”,这不是一个函数,bind
也不能在其上调用。
所以,解决方案是使用
此外,如果您想立即调用绑定的 myfunc,您可以说:
但这还不够我的情况,因为我需要将绑定函数作为参数传递给addEventListener
.
谢谢你们的帮助,伙计们!
python - itertools.product 函数创建产生意想不到的结果
我在理解以下代码段的结果时遇到了一些麻烦,我认为这是因为我对函数绑定感到困惑。为什么以下片段会产生不同的结果?
另一方面:
在我看来,它只是binding
在每个隐式循环中抓取/使用/最后一个变量for
进行计算,即使它为函数名称抓取了正确的变量。
关于导致这些结果的范围或函数定义或闭包(或其他),我缺少什么?
注意:如果我在这个问题上放置的任何标签是无关紧要的,请随时删除它们 - 我将它们全部放置是因为我不确定问题是什么。
javascript - .bind() 与事件处理程序
假设我有以下简化功能。
我意识到在这种特殊情况下绑定ex
到this
有些多余,但是我怎样才能绑定data
参数并仍然保持event
参数不被破坏?
我似乎无法在任何地方找到答案。
javascript - ES6 箭头函数和与 Function.prototype.bind 绑定的函数之间有什么区别(如果有的话)?
在我看来,在 ES6 中,以下两个函数几乎完全相同:
最终结果似乎相同:箭头函数生成一个 JavaScript 函数对象,其上下文绑定到与创建它们的位置this
相同的值。this
显然,在一般意义上,Function.prototype.bind
它比箭头函数更灵活:它可以绑定到除 local 以外的值,并且它可以在任何时间点this
绑定任何函数,可能在它最初创建很久之后。this
但是,我不是在问它bind
本身与箭头函数有何不同,我是在问箭头函数与立即调用bind
with有何不同this
。
ES6 中的这两种结构有什么不同吗?
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
。
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?
javascript - 如何 curry jQuery 方法——哪个`this`值将传递 jQuery 对象?
如果我想使用创建一个 jQuery 函数Function.prototype.bind
,即需要一个包装函数,this
我应该提供哪个值?以下简单的示例似乎不起作用:
$.fn
this
在这里争论是错误的选择。如果需要,它应该是什么,以便函数可以访问 jQuery 内部方法?
javascript - ESLint 和 This-Bind 运算符
This -Bind 运算符是为 ES7 提供方便this
的方法绑定语法的提议:
问题是,它仍处于ES 未来 (7) 版本的提案阶段,因此它尚未包含在标准中,因此不受 ESLint 支持,但仍可通过 tanspiling 使用(使用 Babel,fe)。
问题是,ESLint 是否有任何模块/插件/选项来支持函数绑定运算符(或整套 ES7 实验特性)语法?