【发布时间】:2017-07-25 13:43:24
【问题描述】:
我想扩展 moment.js,以覆盖它的 toJSON 函数。
const moment = require('moment');
class m2 extends moment {
constructor(data) {
super(data);
this.toJSON = function () {
return 'STR';
};
}
}
const json = {
date: moment(),
};
const json2 = {
date: new m2(),
};
console.log(JSON.stringify(json)); // {"date":"2017-07-25T13:36:47.023Z"}
console.log(JSON.stringify(json2)); // {"date":"STR"}
我的问题是,在这种情况下,如果没有new,我就无法调用m2():
const json3 = {
date: m2(), // TypeError: Class constructor m2 cannot be invoked without 'new'
};
如何扩展moment,同时保留在没有new 关键字的情况下调用它的能力?
重写moment.prototype.toJSON 不是一个选项,因为我想在代码的其他地方使用默认的moment 对象。
【问题讨论】:
-
为什么不使用辅助函数来实现呢?
标签: javascript ecmascript-6 momentjs