How many ways to create an object in javascript?

In JavaScript, there are several ways to create objects, each suited for different scenarios:

Object Literals: The simplest and most common way to create objects. Use it for straightforward data structures that do not require methods or complex construction logic.

let person = { name: "John", age: 30 };  

Constructor Functions: Useful for creating multiple instances of an object with the same properties and methods. It’s particularly handy when working with more complex object-oriented patterns.

function Person(name, age) {  
  this.name = name;  
  this.age = age;  
}  
let person = new Person("John", 30);  

Object.create(): Creates a new object with the specified prototype object and properties. Best used when you need to create an object that directly inherits from another without invoking a constructor.

let personProto = { isHuman: true };  
let person = Object.create(personProto);  

Class Syntax (ES6): Provides a more clear and familiar syntax if you’re coming from an object-oriented programming background. It is syntactic sugar over JavaScript's existing prototype-based inheritance and is good for defining complex objects with encapsulation.

class Person {  
  constructor(name, age) {  
    this.name = name;  
    this.age = age;  
  }  
}  
let person = new Person("John", 30);  

Factory Functions: Functions that return a new object. Use them for creating objects where class inheritance is not needed, or when you want to create a complex object without directly using constructors.

function createPerson(name, age) {  
  return { name: name, age: age };  
}  
let person = createPerson("John", 30);