Merge the properties of one or more sources into a target object.
By default the merge is shallow — top-level properties are copied and any
nested objects/arrays are shared by reference. Pass true as the first
argument for a recursive deep merge in which plain objects and arrays are
merged in place.
The own-property __proto__ is skipped to avoid prototype pollution.
extend(deep: true, target: Record<string, unknown>, ...sources: Record<string, unknown>[]): Record<string, unknown>;
extend(target: Record<string, unknown>, ...sources: Record<string, unknown>[]): Record<string, unknown>;deep(literaltrue, optional) — request a deep merge.target(Record<string, unknown>) — the object to merge into. For deep merges, the target is mutated in place; for shallow merges, a new object is returned (the target is not modified).sources(Record<string, unknown>[]) — one or more objects whose properties are copied across.
When called with a single argument (shallow only), the properties are merged
onto the factory $ itself, mirroring jQuery's $.extend(plugin) plug-in
pattern.
For deep merges, the mutated target. For shallow merges, a new object.
import $ from "dabbyjs";
import "dabbyjs/utils/extend/extend";
// Shallow merge
const settings = $.extend({}, defaults, overrides);import $ from "dabbyjs";
import "dabbyjs/utils/extend/extend";
// Deep merge — nested objects are recursed
const merged = $.extend(true, { ui: { theme: "light" } }, { ui: { dense: true } });
// merged.ui === { theme: "light", dense: true }import $ from "dabbyjs";
import "dabbyjs/utils/extend/extend";
// Plug-in pattern — augment $ itself
$.extend({
log(message: string) { console.log("[dabby]", message); },
});- $.isPlainObject() — used internally to decide what is recursable
- $.each()