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.

What comes next?

Chapter index and book recommendations.