gpt4 book ai didi

javascript - polymer this 指针

转载 作者:行者123 更新时间:2023-11-30 12:37:10 25 4
gpt4 key购买 nike

我正在使用 Polymer 框架,我非常喜欢它。但是我不明白的一件事是与 this-pointer 的混淆。当从自定义组件中的按钮调用函数时,this 指针指向自定义组件。非常合乎逻辑。但是当自定义组件中的函数被外部​​调用时,例如来自库的回调或来自另一个组件的调用,this 指针是完全不同的东西。为什么在这种情况下它不指向函数所在的自定义组件?

最佳答案

Javascript 在解决 this 时有点怪异。 ,经常不做你想做的事。唯一的优点是它易于解释和理解。

函数的 this值由它的调用方式设置。假设您有一个值 val用一种方法 method .如果方法被称为 val.method()然后在那个电话中method然后 thisval .如果你改为做 var theMethod = val.method; theMethod();那么对于那个电话,this是别的东西(全局上下文对象,在浏览器中是 window )。

幸运的是,解决方案很简单。函数上有一个方法叫做 bind 返回一个具有 this 的新函数一成不变地烘烤。所以var theMethod = val.method.bind(val); theMethod()this绑定(bind)到 val .

在未来的许多情况下,我们将能够使用 ES6 Arrow Notation在函数定义时获得此行为,但现在,在传递方法时(例如注册事件处理程序)一定要烘焙 this在显式 bind .

关于javascript - polymer this 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727627/

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