Update Object.assign() example to include modern spread operator alternative

Author: rushabhT3Created Jul 13, 2025Updated Nov 24, 2025

Update Object.assign() example to include modern spread operator alternative

Summary

The current example for "Set default objects with Object.assign" should be updated to include the modern spread operator syntax as the preferred approach, while keeping Object.assign() for reference.

Current State

The documentation currently shows Object.assign() as the "good" example:

function createMenu(config) {
  let finalConfig = Object.assign(
    {
      title: "Foo",
      body: "Bar",
      buttonText: "Baz",
      cancellable: true
    },
    config
  );
  return finalConfig;
}

Proposed Change

Update the example to show the spread operator as the primary modern approach:

function createMenu(config) {
  const finalConfig = {
    title: "Foo",
    body: "Bar",
    buttonText: "Baz",
    cancellable: true,
    ...config  // Override defaults with user config
  };
  return finalConfig;
}

Suggested Implementation

Show both approaches with clear preference:

// Modern approach (recommended)
function createMenu(config) {
  const finalConfig = {
    title: "Foo",
    body: "Bar", 
    buttonText: "Baz",
    cancellable: true,
    ...config
  };
  return finalConfig;
}

// Alternative using Object.assign()
function createMenuAlternative(config) {
  const finalConfig = Object.assign(
    {
      title: "Foo",
      body: "Bar",
      buttonText: "Baz", 
      cancellable: true
    },
    config
  );
  return finalConfig;
}

Source: ryanmcdermott/clean-code-javascript