在ES6中扩展类时是否可以定义回调?
Is it possible to define callback when your class is extended in ES6
基本上,如果调用我的库类,我想做一些设置工作。例如:
class Child extends Parent {
//methods
}
我想分配一个函数,当父类被扩展时调用。我想以某种方式得到通知。在它即将发生之前(将方法作为参数附加),或者在将Child类作为参数附加之后。
我建立了一个ES5库,它使用工厂函数来创建新类,并且在该函数中我做了大量的设置工作。我想用ES6类语法的简单性来做同样的事情,所以使用我的库的开发人员不需要考虑什么特别的事情,可以考虑更直接的类。
任何帮助都将非常感激。
我认为@Mjh想说的是你可以在父类中实现一个钩子。扩展Parent类的类将能够覆盖该方法。如果他们不想用它做任何事情……也很好。
https://jsbin.com/navijusuzo/1/edit?js,控制台
class Parent {
constructor(){
this.setup();
this.afterConstruct();
}
setup(){
// Do stuff, validate, init object
}
// HOOK to be overriden by classes that extend Parent
afterConstruct(){
}
}
class Child extends Parent {
constructor(){
super();
}
// Override: Implements Hook
afterConstruct(){
console.log('Child hooking')
}
}
new Parent();
new Child();
你可以在ES6构造函数中定义回调:
class Point {
constructor(x, y, cb) {
this.x = x;
this.y = y;
if (typeof cb === 'function') return cb(); //If Callback function is available, execute it
}
}
class ColorPoint extends Point {
constructor(x, y, color, cb) {
super(x, y, cb); //Pass callback to parent constructor
this.color = color;
}
}
let cp = new ColorPoint(25, 8, 'green', function () {
alert('callback called')
}); //Callback function passed
这里的小提琴
相关文章:
- 要求多页&多应用程序未执行定义回调
- 为从AJAX调用中utlizes DATA参数的函数定义回调
- 如何向jquery插件添加自定义回调
- 如何在javascript中对用户函数进行自定义回调
- 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- 自定义回调护照
- 在 JavaScript 中为所有事件类型定义回调函数
- 为什么使用 api 调用在函数内定义回调函数会引发“未捕获的引用错误”
- 如何在异步库的“Each”函数中定义回调
- 当无法定义回调时使用angularjs JSONP
- .animate()的jQuery自定义回调
- Javascript自定义回调函数不工作
- require.js-未定义的模块作为参数传递以定义回调
- 找不到Angular.js Angular拖放自定义回调函数
- 在带有已定义回调函数的JSONP中使用$.when
- 为节点函数定义自定义回调
- jQuery插件的自定义回调函数
- 在Meteor中运行的回调中未定义回调参数
- 给一个提供的NodeJS回调我自己的自定义回调
- Javascript添加带有自定义回调的事件侦听器