Extending Object

# /#!/JoePea (9 years ago)

Are the following examples the same? Is there any reason to extend Object manually?

class Foo {
  constructor() {}
}
new Foo
class Foo extends Object {
  constructor() { super() } // super() is required.
}
new Foo
# Oriol Bugzilla (9 years ago)

They are not necessarily the same:

var _Object = window.Object,
    Object = function() {};
class Foo1 {
  constructor() {}
}
class Foo2 extends Object {
  constructor() { super(); }
}
_Object.getPrototypeOf(Foo1.prototype); // _Object.prototype
_Object.getPrototypeOf(Foo2.prototype); // Object.prototype

You are able to shadow or replace Object with a custom constructor. And this constructor might use this, that's why super() is required.

# Allen Wirfs-Brock (9 years ago)

An HTML attachment was scrubbed... URL: esdiscuss/attachments/20160423/004fe620/attachment