node-web-mvc
Version:
node spring mvc
42 lines (41 loc) • 1.41 kB
JavaScript
;
/**
* @module ObjectUpdater
* @description object类型数据更新器
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const AbstractUpdater_1 = __importDefault(require("./AbstractUpdater"));
class ObjectUpdater extends AbstractUpdater_1.default {
internalUpdate(ctor, newCtor) {
const creatable = typeof newCtor === 'function';
const keys = Object.keys(this.data);
// 替换实例
keys.forEach((key) => {
const element = this.data[key];
if (!creatable || !this.needHotFn(element, ctor)) {
return;
}
else if (!creatable) {
console.warn(`Hot fail: ${newCtor.name} : No-parameter construction required`);
}
this.data[key] = this.createInstance(newCtor, element);
});
}
cleanUpdate(oldCtor) {
const keys = Object.keys(this.data);
const removes = [];
keys.forEach((key) => {
const element = this.data[key];
if (this.needHotFn(element, oldCtor)) {
removes.push(key);
}
});
removes.forEach((key) => {
delete this.data[key];
});
}
}
exports.default = ObjectUpdater;