聚合物指针

彼得财富

我正在使用Polymer框架,我非常喜欢。但是我不明白的是与此指针的混淆。例如,当从自定义组件中的按钮调用函数时,此指针指向自定义组件。很合逻辑。但是,当从外部调用某个自定义组件中的函数时,例如从库中进行回调或从另一个组件中进行调用,则此指针完全不同。为什么在这种情况下为什么不指向函数所在的自定义组件呢?

彼得·伯恩斯

在解决问题时thisJavascript有点奇怪,常常不做您想做的事情。唯一可以节省的恩典是易于解释和理解。

函数的this值由调用方式设置。假设您有val一个方法method如果方法被称为像val.method()然后在调用method,然后thisval如果您不这样做,var theMethod = val.method; theMethod();那么该调用this还有别的(全局上下文对象,在浏览器中为window)。

幸运的是,解决方案很简单。有呼吁功能的方法bind是返回具有新的功能this英寸所以一成不变出炉var theMethod = val.method.bind(val); theMethod()已经this绑定val

将来,在很多情况下,我们将能够使用ES6箭头表示法在函数定义时引入此行为,但就目前而言,在传递方法(例如注册事件处理程序)时,请务必将thisin明确地与bind

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章