现在我在一个文件中有下面的内容,并且希望将clock
函数/类移动到它自己的文件中。
我不知道该怎么称呼它,因为我认为它是一个函数,但是带有一些类特性。
如果我改变
var Clock = function(options) {
至
module.exports = (options) => {
后来呢
var Clock = require('./functions/clock')
var timer = new Clock({delay: options.checkInterval});
然后我得到
TypeError: Clock is not a constructor
有没有人知道如何将这个函数移动到它自己的文件中,所以我有index.js
和functions/clock.js
?
var Clock = function(options) {
var timer, offset, clock, interval
options = options || {}
options.delay = options.delay || 1000
reset()
function start() {
if (!interval) {
offset = Date.now()
interval = setInterval(update, options.delay)
}
}
function update() {
clock += delta()
}
function delta() {
var now = Date.now(),
d = now - offset;
offset = now;
return d;
}
function stop() {
if (interval) {
clearInterval(interval)
interval = null
}
}
function reset() {
clock = 0
}
function read() {
return clock
}
this.start = start
this.stop = stop
this.reset = reset
this.read = read
}
// all the following should not be moved
...
var timer = new Clock({delay: options.checkInterval});
...
看到您的导出,似乎您正在导出一个箭头函数
,不幸的是,我们不能将箭头函数用于构造函数
调用(即,我们不能将new
用于它们),因为它们没有[[Construct]]
方法。 因此,箭头函数也不存在prototype
属性。
所以只要把你的箭头函数改成正常函数,你就可以走了。
var Clock = function(options) {
var timer, offset, clock, interval
options = options || {}
options.delay = options.delay || 1000
reset()
function start() {
if (!interval) {
offset = Date.now()
interval = setInterval(update, options.delay)
}
}
function update() {
clock += delta()
}
function delta() {
var now = Date.now(),
d = now - offset;
offset = now;
return d;
}
function stop() {
if (interval) {
clearInterval(interval)
interval = null
}
}
function reset() {
clock = 0
}
function read() {
return clock
}
this.start = start
this.stop = stop
this.reset = reset
this.read = read
}
module.exports = Clock;