UNPKG

@opra/common

Version:
32 lines (31 loc) 1.16 kB
export function mergePrototype(targetProto, baseProto, filter) { for (const k of Object.getOwnPropertyNames(baseProto)) { if (k === 'constructor' || k === '__proto__' || k === 'toJSON' || k === 'toString' || (filter && !filter(k))) { continue; } Object.defineProperty(targetProto, k, Object.getOwnPropertyDescriptor(baseProto, k) || Object.create(null)); } } // noinspection JSUnusedLocalSymbols export function inheritPropertyInitializers(target, clazz, // eslint-disable-next-line @typescript-eslint/no-unused-vars isPropertyInherited = (key) => true) { try { const tempInstance = new clazz(); const propertyNames = Object.getOwnPropertyNames(tempInstance); propertyNames .filter(propertyName => typeof tempInstance[propertyName] !== 'undefined' && typeof target[propertyName] === 'undefined') .filter(propertyName => isPropertyInherited(propertyName)) .forEach(propertyName => { target[propertyName] = tempInstance[propertyName]; }); } catch { // } }