Merge branch 'master' into patch-47
This commit is contained in:
commit
c0d8fdbfff
6 changed files with 16 additions and 16 deletions
|
@ -72,8 +72,8 @@ Why so?
|
|||
That's for historical reasons.
|
||||
|
||||
- The `"prototype"` property of a constructor function has worked since very ancient times.
|
||||
- Later, in the year 2012: `Object.create` appeared in the standard. It gave the ability to create objects with a given prototype, but did not provide the ability to get/set it. So browsers implemented the non-standard `__proto__` accessor that allowed the user to get/set a prototype at any time.
|
||||
- Later, in the year 2015: `Object.setPrototypeOf` and `Object.getPrototypeOf` were added to the standard, to perform the same functionality as `__proto__`. As `__proto__` was de-facto implemented everywhere, it was kind-of deprecated and made its way to the Annex B of the standard, that is: optional for non-browser environments.
|
||||
- Later, in the year 2012, `Object.create` appeared in the standard. It gave the ability to create objects with a given prototype, but did not provide the ability to get/set it. So browsers implemented the non-standard `__proto__` accessor that allowed the user to get/set a prototype at any time.
|
||||
- Later, in the year 2015, `Object.setPrototypeOf` and `Object.getPrototypeOf` were added to the standard, to perform the same functionality as `__proto__`. As `__proto__` was de-facto implemented everywhere, it was kind-of deprecated and made its way to the Annex B of the standard, that is: optional for non-browser environments.
|
||||
|
||||
As of now we have all these ways at our disposal.
|
||||
|
||||
|
|
|
@ -192,7 +192,7 @@ class Rabbit extends Animal {}
|
|||
alert(Rabbit.__proto__ === Animal); // true
|
||||
|
||||
// for regular methods
|
||||
alert(Rabbit.prototype.__proto__ === Animal.prototype);
|
||||
alert(Rabbit.prototype.__proto__ === Animal.prototype); // true
|
||||
```
|
||||
|
||||
## Summary
|
||||
|
|
|
@ -21,7 +21,7 @@ alert(filteredArr); // 10, 50
|
|||
alert(filteredArr.isEmpty()); // false
|
||||
```
|
||||
|
||||
Please note a very interesting thing. Built-in methods like `filter`, `map` and others -- return new objects of exactly the inherited type `PowerArray`. Their internal implementation uses object `constructor` property for that.
|
||||
Please note a very interesting thing. Built-in methods like `filter`, `map` and others -- return new objects of exactly the inherited type `PowerArray`. Their internal implementation uses the object's `constructor` property for that.
|
||||
|
||||
In the example above,
|
||||
```js
|
||||
|
@ -74,7 +74,7 @@ Built-in objects have their own static methods, for instance `Object.keys`, `Arr
|
|||
|
||||
As we already know, native classes extend each other. For instance, `Array` extends `Object`.
|
||||
|
||||
Normally, when one class extends another, both static and non-static methods are inherited. That was thoroughly explained in the chapter [](info:static-properties-methods#statics-and-inheritance).
|
||||
Normally, when one class extends another, both static and non-static methods are inherited. That was thoroughly explained in the article [](info:static-properties-methods#statics-and-inheritance).
|
||||
|
||||
But built-in classes are an exception. They don't inherit statics from each other.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue