Oriol Bugzilla (2016-04-24T01:43:43.000Z)
They are no necessary the same:

```js
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.

> From: joe at trusktr.io
> Date: Sat, 23 Apr 2016 18:15:28 -0700
> Subject: Extending Object
> To: es-discuss at mozilla.org
> 
> Are the following examples the same? Is there any reason to extend
> Object manually?
> 
> ```js
> class Foo {
>   constructor() {}
> }
> new Foo
> ```
> 
> ```js
> class Foo extends Object {
>   constructor() { super() } // super() is required.
> }
> new Foo
> ```
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20160424/651dc27a/attachment-0001.html>
oriol-bugzilla at hotmail.com (2016-04-24T01:46:08.096Z)
They are not necessarily the same:

```js
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.