前端之家收集整理的这篇文章主要介绍了
javascript – 如何在分配给变量时将方法绑定到原始上下文,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
由于函数在未作为对象属性[1]访问时被赋予“全局上下文”,因此以下内容具有相同的特征:
const foo = ({bar}) => {
bar(); // this === window
}
因为它只是语法糖:
const foo = (x) => {
var bar = x.bar;
bar();
}
因为我现在必须重新绑定或放弃糖,这对我来说似乎有点违反直觉.
有没有办法改变这种行为,以便不改变上下文(除了通过.apply / call / bind显式设置它)?是否有任何关于标准的计划/建议?
[1] Javascript lost context when assigned to other variable
最佳答案
好吧,你回答了自己的问题.如果您将Object作为参数,那么作为
属性传递的任何
函数都将是一个
方法,从而失去上下文,无论语法是什么样的.
你可以做的是从参数的方法中调用绑定函数:
const argumentContainingBar = {
bar: () => { originallyBoundFunction() }
}
现在你可以foo(argumentContainingBar)而不会丢失上下文.