在ES6中创建Function的子类的惯用方法是什么?

时间:2018-02-01 14:21:32

标签: javascript ecmascript-6

这就是我目前的做法:

const funtype = Object.create(Function.prototype);

funtype.compose = function (foo) {
    return Object.setPrototypeOf(x => this(foo(x)), funtype);
};

const dbl = Object.setPrototypeOf(x => 2 * x, funtype);
const inc = Object.setPrototypeOf(x => x + 1, funtype);
const sqr = Object.setPrototypeOf(x => x * x, funtype);

const notFound = dbl.compose(dbl).compose(inc).compose(sqr);

console.log(notFound(10));

但是,Object.setPrototypeOf的MDN文档警告我们不要使用它。有没有更好的方法在ES6中创建Function的子类?最好不要使用新的类语法。

0 个答案:

没有答案