javascript - 如何在 Node.js 中使用第二个构造函数的变量?(使用导入/导出)
问题描述
我有 3 个不同.js
的文件,它们通过import/export
关键字在它们之间链接。每个文件都有自己的特定功能,如下所示:
Init.js
: 调用Event.js
和Touch.js
。将变量发送到Event.js
.Event.js
: 接收来自每个元素的变量Init.js
并将其注册event
到每个元素。Touch.js
: 识别event
idEvent.js
然后记录它。
一个问题是 的构造函数Touch.js
根本不起作用。浏览器无法访问它。undefined
当我尝试将名为A
and的局部变量记录下来时,它会一直触发B
。
我发现的唯一可能的方法是从 中创建变量Init.js
,将它们传递给Event.js
,然后再次传递给 ,Touch.js
就像我在下面所做的那样。
有没有办法使用自己的构造函数的局部变量?
请看下面的代码:
//============== Init.js ==============
'use strict';
import {Event} from './event.js';
import { proTouch } from './touch.js';
const slider = (function() {
class Slider {
constructor(elem) {
this.elem = document.querySelectorAll(elem);
this.C = false;
this.Event = new Event();
this.Event.register(this.elem, 'mouseenter', proTouch.start, this.C);
}
}
return {
initialize: new Slider('.box')
}
}());
//============== Event.js ==============
export class Event {
constructor() {
}
register(node, eventName, callback, flag) {
let bind = callback.bind(this);
node.forEach(cur => {
cur.addEventListener(eventName, (e) => bind(e, flag))
})
}
}
//============== Touch.js ==============
class Touch {
constructor() {
this.A = false;
this.B = true; // <-- I want to use this constructor function.
}
start(e, flag) {
console.log(e.type, this.A, this.B, flag); // <-- this.A and this.B fire undefined.
}
}
const proTouch = new Touch();
export { proTouch }
解决方案
在您的Event
课程中,您将回调绑定到this
. 这是错误的,因为在这种情况下this
是Event
实例并且不包含a
或b
变量。删除该行。
let bind = callback.bind(this);//Wrong. Delete this line.
当您发送回调时,您希望将 绑定proTouch
到start
方法。所以,绑定那里。
this.Event.register(this.elem, 'mouseenter', proTouch.start.bind(proTouch), this.C);
推荐阅读
- python-3.x - 从 python DiskCache 扇出缓存中删除一个键
- javascript - 对象不支持 Microsoft Edge 中的属性或方法“设置”
- python-3.x - Python Selenium 无法选择下拉菜单(chrome webdriver)
- artificial-intelligence - 编辑 Web 应用程序 bot cortana 频道时的问题
- sql - 从父元素获取属性值 - 仅通过 sql
- ubuntu - 在 ubuntu 上构建电子应用程序失败并显示“权限被拒绝”
- ios - 关于 Swift 内存管理的问题
- azure-devops - 列出构建工件的文件
- javascript - 未捕获的 ReferenceError:未定义 ws
- amazon-web-services - AWS API Gateway:文档 Swagger 导出模型类型 null 被忽略