class A vs. class A extends Object

class A extends Objectclass A 最大的不同就是:

  • 改變繼承路線,繼承了 Object (而不是 Function.prototype)

  • 變成 derived class (而不是 base class),因此在 constructor (如果有的話) 內必須呼叫 super

// -------------------------------------------
// ⭐ B can access Object's "static methods",
// ⭐ but A can't❗
// -------------------------------------------
class A {}
class B extends Object {}

const obj = { name: 'Joe', age: 21 };

// ⛔ TypeError: `A.getOwnPropertyNames` is not a function❗
A.getOwnPropertyNames(obj);

// ⭐ normally call `Object.getOwnPropertyNames(obj)` directly.
B.getOwnPropertyNames(obj),    // [ 'name', 'age' ]

Last updated