Object Built-in Methods in JavaScript
Introduction
The Object constructor provides utilities to create, copy, freeze, and enumerate properties—beyond dot notation from object properties. This chapter covers keys, values, entries, assign, freeze, and fromEntries for everyday data handling.
Prerequisites
Object.keys / values / entries
javascript
const scores = { ada: 95, lin: 88, sam: 72 };
console.log(Object.keys(scores));
console.log(Object.values(scores));
console.log(Object.entries(scores));entries pairs work well with Map:
javascript
const map = new Map(Object.entries(scores));
console.log(map.get("ada"));Object.fromEntries
javascript
// Reverse entries → object
const pairs = [
["sku", "A1"],
["qty", 2],
];
const cart = Object.fromEntries(pairs);
console.log(cart);Object.assign
javascript
// Shallow merge into target
const target = { a: 1 };
const source = { b: 2, a: 9 };
Object.assign(target, source);
console.log(target);Prefer spread for immutable updates: { ...a, ...b }.
Object.create
javascript
// Object with specific prototype
const proto = { greet() { return `Hi ${this.name}`; } };
const person = Object.create(proto);
person.name = "Ada";
console.log(person.greet());See prototype features.
Object.freeze / seal / preventExtensions
javascript
const config = Object.freeze({ api: "https://api.example.com" });
config.api = "other";
console.log(config.api);Details in object extensibility.
Object.hasOwn
javascript
const data = Object.create({ inherited: true });
data.own = 1;
console.log(Object.hasOwn(data, "own"));
console.log(Object.hasOwn(data, "inherited"));Looping Own Keys Safely
javascript
for (const key of Object.keys(scores)) {
console.log(key, scores[key]);
}
for (const [name, score] of Object.entries(scores)) {
console.log(`${name}: ${score}`);
}Mini Example: Pick and Omit
javascript
function pick(obj, keys) {
const result = {};
for (const key of keys) {
if (Object.hasOwn(obj, key)) result[key] = obj[key];
}
return result;
}
function omit(obj, keys) {
const skip = new Set(keys);
return Object.fromEntries(
Object.entries(obj).filter(([k]) => !skip.has(k))
);
}
const user = { id: 1, name: "Ada", password: "secret" };
console.log(pick(user, ["id", "name"]));
console.log(omit(user, ["password"]));FAQ
for...in vs Object.keys?
for...in includes inherited enumerable keys—Object.keys is own keys only.
Deep clone?
structuredClone(obj) in modern environments; JSON round-trip loses types.
Object.groupBy?
Newer helper to group arrays by key—check Node/browser support.