@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
43 lines (42 loc) • 1.36 kB
JavaScript
;
import { arrayIsEqual } from "./ArrayUtils";
import { isBoolean, isNumber, isString, isObject } from "./Type";
import cloneDeep from "lodash-es/cloneDeep";
import clone from "lodash-es/clone";
export function getObjectMethodNames(obj) {
let properties = /* @__PURE__ */ new Set();
let currentObj = obj;
do {
Object.getOwnPropertyNames(currentObj).map((item) => properties.add(item));
} while (currentObj = Object.getPrototypeOf(currentObj));
return [...properties.keys()].filter((item) => typeof obj[item] === "function");
}
export function objectIsEqual(object0, object1) {
if (isBoolean(object0) && isBoolean(object1)) {
return object0 == object1;
}
if (isNumber(object0) && isNumber(object1)) {
return object0 == object1;
}
if (isString(object0) && isString(object1)) {
return object0 == object1;
}
if (isObject(object0) && isObject(object1)) {
const keys0 = Object.keys(object0);
const keys1 = Object.keys(object1);
if (!arrayIsEqual(keys0, keys1)) {
return false;
}
return JSON.stringify(object0) == JSON.stringify(object1);
}
return false;
}
export function objectMerge(object0, object1) {
return Object.assign(object0, object1);
}
export function objectClone(value) {
return clone(value);
}
export function objectCloneDeep(value) {
return cloneDeep(value);
}