UNPKG

node-web-mvc

Version:
42 lines (41 loc) 1.41 kB
"use strict"; /** * @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;