@antv/g-base
Version:
A common util collection for antv projects
53 lines (46 loc) • 982 B
text/typescript
import EE from '@antv/event-emitter';
import { IBase } from '../interfaces';
import { mix } from '../util/util';
import { LooseObject } from '../types';
abstract class Base extends EE implements IBase {
/**
* 内部属性,用于 get,set,但是可以用于优化性能使用
* @type {object}
*/
cfg: LooseObject;
/**
* 是否被销毁
* @type {boolean}
*/
destroyed: boolean = false;
/**
* @protected
* 默认的配置项
* @returns {object} 默认的配置项
*/
getDefaultCfg() {
return {};
}
constructor(cfg) {
super();
const defaultCfg = this.getDefaultCfg();
this.cfg = mix(defaultCfg, cfg);
}
// 实现接口的方法
get(name) {
return this.cfg[name];
}
// 实现接口的方法
set(name, value) {
this.cfg[name] = value;
}
// 实现接口的方法
destroy() {
this.cfg = {
destroyed: true,
};
this.off();
this.destroyed = true;
}
}
export default Base;