class A vs. class A extends Object

class A extends Object ่ˆ‡ class 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

Was this helpful?