扩展 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?