javascript - 从同一个类中的另一个方法调用方法
问题描述
现在我正在尝试从同一个类中的另一个方法调用一个方法。当我尝试这样做时,我得到了错误
this.beginConnDrag 不是函数
这是仅显示重要方法的类的外观。
class NEditor {
constructor() {
...
}
...
beginConnDrag(path) {
if (this.dragMode != 0) return;
this.dragMode = 2;
this.dragItem = path;
this.startPos = path.output.getPos();
this.setCurveColor(path.path, false);
window.addEventListener("click", this.onConnDragClick);
window.addEventListener("mousemove", this.onConnDragMouseMove);
}
onOutputClick(e) {
e.stopPropagation();
e.preventDefault();
var path = e.target.parentNode.ref.addPath();
console.log(e.target.parentNode);
console.log("output clicked");
this.beginConnDrag(path);
}
}
当 onOutputClick() 方法尝试调用 beginConnDrag 组件时,该错误被抛出。如果这些不是静态方法,我不明白为什么不允许此调用。
解决方案
您可以使用arrow
函数来保持this
对象不变:-
class NEditor {
constructor() {
...
}
...
beginConnDrag = (path) => {
if (this.dragMode != 0) return;
this.dragMode = 2;
this.dragItem = path;
this.startPos = path.output.getPos();
this.setCurveColor(path.path, false);
window.addEventListener("click", this.onConnDragClick);
window.addEventListener("mousemove", this.onConnDragMouseMove);
}
onOutputClick = (e) => {
e.stopPropagation();
e.preventDefault();
var path = e.target.parentNode.ref.addPath();
console.log(e.target.parentNode);
console.log("output clicked");
this.beginConnDrag(path);
}
}
推荐阅读
- python - 将嵌套 JSON 中的值添加到 pandas 数据框
- c++ - cuda malloc 管理内存后的新位置
- reactjs - '(old: number) => void' 类型的参数不能分配给'number' 类型的参数
- sql-server - 有没有办法简化 2 个值的 NULL 比较
- elasticsearch - Elasticsearch - 重新索引数据流以删除一些不需要的字段
- docker - Stat.exists 与 ansible 中的字典
- android - 使用 Firebase RemoteConfig 强制更新 Android 应用程序版本并不总是有效
- ios - 使用苹果 PDFKit 突出显示大型 pdf 文档时应用程序冻结
- python - 熊猫按天重新采样而不填写缺失的日期
- javascript - 在 React 组件中渲染 HTML DOM 节点