这就是我目前的做法:
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
的子类?最好不要使用新的类语法。