是否可以创建一个类,用其原型上的方法实例化函数?我正在尝试将代码从原型结构转换为使用 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() {
}
}
不幸的是,这不起作用并且没有任何方法作为回报。
是否可以创建一个类,用其原型上的方法实例化函数?
是的,使用 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
在这里给你额外的自由。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)