扩展 JavaScript 功能
Extending JavaScript Function
有没有办法将下面的代码作为 Class 扩展函数?如果没有,有更好的方法吗?我不想使用标准香草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 是这样的:
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 的新手,到处都找不到答案。
更好的方法是不涉及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?。
有没有办法将下面的代码作为 Class 扩展函数?如果没有,有更好的方法吗?我不想使用标准香草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 是这样的:
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 的新手,到处都找不到答案。
更好的方法是不涉及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?。