是否可以创建一个使用方法原型实例化函数的类?我试图将代码从原型结构转换为使用es6类语法。这是一个设定的,简化的起点示例
function createFun(init) {
function fun(newDats) {
this.data = newDats;
// create universe
}
function internalMethod() {
}
fun.data = init;
fun.aMethod = function () {
internalMethod();
}
assign(fun, AnExtendableClass.prototype);
return fun;
}
// and can be used as such
fun = createFun('first');
fun('second');
fun.aMethod();
fun.methodFromExtendableClass('third')
这就是我试过的
class Fun extend AnExtendableClass {
constructor(init) {
super();
this.data = init;
function fun(newDats) {
this.data = newDatas;
//create universe
}
assign(fun, this);
return fun;
}
aMethod() {
}
}
不幸的是,这不起作用,并且没有任何方法作为回报。
答案 0 :(得分:1)
是否可以创建一个使用方法原型实例化函数的类?
是的,使用ES6可以继承Function
- 但是,这并不是很好,因为构造函数需要代码字符串:
class Fun {
constructor() {
super("newDats", `
this.data = newDats;
// create universe
`)
}
data() { }
aMethod() { }
}
let fun = new Fun;
fun(…);
fun.aMethod(…);
我正在尝试将代码从原型结构转换为使用es6类语法。这是一个设定的,简化的起点示例
请勿使用class
语法。新语法非常有限,只应用于标准类声明。如果你做任何奇怪的事情 - 从构造函数返回函数,从其他类复制方法,分配静态属性和使用内部方法在这方面肯定是奇怪的 - 然后去使用“旧的”显式方式。新的Reflect.setPrototypeOf
在这里给你额外的自由。