JS: Use Object.create to Emulate Constructor

By Xah Lee. Date: . Last updated: .

How to use Object.create to emulate constructor?

Here is the answer.

// using Object.create to emulate constructor

const jj = { "a": 3 };

// constructor version
const F1 = function (x) {
 this.y = x;
};
F1.prototype = jj;

// Object.Create version
const F2 = function (x) {
 return Object.create(
  jj,
  { "y": { value: x, writable: true, enumerable: true, configurable: true } },
 );
};

const x1 = new F1(4);
const x2 = F2(4);

// s------------------------------
// test

// same parents
console.assert(Reflect.getPrototypeOf(x1) === Reflect.getPrototypeOf(x2));

// same properties and values

console.assert(JSON.stringify(Reflect.getOwnPropertyDescriptor(x1, "y")) === JSON.stringify(Reflect.getOwnPropertyDescriptor(x2, "y")));