对此和 getcontext js/ts 以及如何绕过它感到困惑

Posted

技术标签:

【中文标题】对此和 getcontext js/ts 以及如何绕过它感到困惑【英文标题】:Confused about this & getcontext js/ts and how to get around it 【发布时间】:2021-10-13 21:12:37 【问题描述】:

所以,我遇到了一个问题,我经常遇到不确定的错误,(在浏览器中)并且似乎无法弄清楚为什么/如何解决它。从我收集到的信息来看,关键字“this”在 js 中是一个完全令人困惑的混乱,而且在 ts 中也是如此。

这是我的问题:

export class XY

   property: boolean;
    //other proprs
   constructor()
    this.property = false;

 setproperty(e) //this is an onclick event
 
  this.property = true;
 //my problem is that this.property doesn't refer to class member variable "property"
 

即使我尝试类似 const boundGet = XY.bind.(xy),它仍然未定义且“无法访问”

如果不使用关键字“this”,我应该如何引用成员变量属性而不使其成为 const??

【问题讨论】:

How does the “this” keyword work? 这能回答你的问题吗? How to access the correct `this` inside a callback 我会阅读并更新,谢谢! 这里的问题是您没有正确初始化构造函数中的实例成员。应该是:constructor() this.property = false; 进行了编辑。我做我的代码,只是不正确地复制它,堆栈溢出大声笑。 【参考方案1】:

所以,问题出在 Devextreme 的事件绑定上。 如果你想覆盖他们的数据网格控件“编辑”按钮事件,你必须传递这样的事件 [onClick]="yourfunc" 现在这显然不是标准的 (event)="blabla"。 无论背景中发生什么,都会弄乱“this”的上下文。 通过使用不同的事件解决了这个问题。

【讨论】:

以上是关于对此和 getcontext js/ts 以及如何绕过它感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

如何重复一系列承诺中的步骤以及如何从失败的步骤中恢复?

如何在firebase.auth(js,ts)中更新用户电话号码

如何在 JS/TS 中实现伪阻塞异步队列?

记录TS和JS的区别

记录TS和JS的区别

无法获取 Vue 状态的元素 (Vue.js/JS/TS)