Определите класс, который расширяет функцию
Я пытаюсь создать класс, который расширяет Function
,
var MyClass = class MyClass extends Function {
constructor(func, /*some other things*/) {
//this is not defined in extended classes for some reason
var newThis = func;
//assign other stuff to newThis
return newThis;
}
//methods
}
Сначала я думал, что это будет работать, но instanceof
проверка показала, что созданный объект был просто обычной функцией без каких-либо моих методов или свойств. Итак, я понял, что мне нужно использовать super
ключевое слово для construct
Function
,
var newThis = super(func.toString().split('(')[1].split(')')[0].split(','),
func.toString().split('{')[1].split('}')[0])
Это работает, но не соответствует политике безопасности контента (что-то подобное), что означает, что он не будет работать в приложениях Chrome.
1 ответ
Решение
Я не на 100% то, что вы пытаетесь сделать, но чтобы правильно расширить класс в ES6, вы должны позвонить super()
прежде чем что-то делать.
class Foo extends Function {
constructor(){
super();
this.x = 'foo';
}
}
let test= new Foo();
console.log(test.x); // 'foo'
Вы можете попробовать это на Babel REPL здесь