【发布时间】:2019-07-08 19:48:19
【问题描述】:
我有 3 个不同的 .js 文件,它们之间通过 import/export 关键字链接。每个文件都有自己的特定功能,如下所示:
Init.js:调用Event.js和Touch.js。将变量发送到Event.js.Event.js:从Init.js接收变量并注册event到每个元素。Touch.js:识别来自Event.js的eventid,然后记录它。
一个问题是Touch.js 的构造函数根本不起作用。浏览器无法访问它。当我尝试将名为 A 和 B 的局部变量记录下来时,它会一直触发 undefined。
我发现唯一可能的方法是从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 }
【问题讨论】:
标签: javascript node.js import constructor export