pragma-views2
Version:
31 lines (23 loc) • 856 B
JavaScript
import {removeObserverFromCache} from "./binding/observers.js";
export function cloneObject(model) {
return JSON.parse(JSON.stringify(model));
}
export function cleanModel(model) {
if (model == undefined || typeof model != "object" || model.__disposed == true) return;
removeObserverFromCache(model);
model.__disposed = true;
if (typeof model.dispose == "function") {
model.dispose.call(model);
model.dispose = null;
delete model.dispose;
}
const keys = Reflect.ownKeys(model);
for (let key of keys) {
const target = Reflect.get(model, key);
if (target != undefined && typeof target == "object") {
cleanModel(target);
}
Reflect.set(model, key, null);
Reflect.deleteProperty(model, key);
}
}