有没有办法将下面的代码作为类扩展函数?如果不是有更好的方法吗?我不想要使用除标准vanilla JavaScript 之外的任何东西
Function.prototype._data = new Map();
function TEMP (key) { return TEMP._data.get(key) }
TEMP.remove = function(id) { TEMP._data.delete(id) };
TEMP.reset = function() { TEMP._data.clear()};
TEMP.store = function(key, val) { TEMP._data.set(key, val) }
目前这就是班级的样子:
class Temp extends Function {
constructor(){
super();
this._data = new Map();
}
remove(key) { this._data.delete(key) }
reset() { this._data.clear() }
store(key, val) { this._data.set(key, val) }
};
我是Stack Overflow的新手,无法在任何地方找到答案。
答案 0 :(得分:2)
更好的方法是不要涉及Function.prototype
。只是做
function TEMP (key) { return TEMP._data.get(key) }
TEMP._data = new Map(); /*
^^^^^^^^^^^^ */
TEMP.remove = function(id) { TEMP._data.delete(id) };
TEMP.reset = function() { TEMP._data.clear()};
TEMP.store = function(key, val) { TEMP._data.set(key, val) }
由于您的计划中只有一个TEMP
只有一个Map
,因此没有理由在此处涉及class
。
如果您需要多个实例,并且坚持为此扩展Function
而不是使用简单工厂,请参阅How to extend Function with ES6 classes?。