Skip to content

Commit ace0d12

Browse files
committed
Changing way to inheritance
1 parent 143bda7 commit ace0d12

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

doc/ru/object/prototype.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,19 @@
1010

1111
> **Замечание:** В результате выполнения конструкции `Bar.prototype = Foo.prototype` оба объекта будут делить друг с другом **один и тот же** прототип. Так что изменение прототипа одного из объектов повлечёт за собой изменение прототипа другого и наоборот — вряд ли это окажется тем, чего вы ожидали.
1212
13+
> **Замечание:** Для объявления наследования вместо `Bar.prototype = Object.create(Foo.prototype)` можно воспользоваться конструкций `Bar.prototype = new Foo()`, но у нее есть пару недостатков: 1) как правило требуется унаследовать только методы и свойства прототипа, а не создавать для этого новый объект; 2) создание объекта может требовать обязательные аргументы.
14+
15+
> **Примечание:** Метод `Object.create` отсутствует в IE8 и ниже, но его легко реализовать созданием своей такой функции или же можно подключить библиотеку для поддержки старых IE [*es5-shim*][5]
16+
1317
function Foo() {
1418
this.value = 42;
1519
}
16-
Foo.prototype = {
17-
method: function() {}
18-
};
20+
Foo.prototype.method = function() {}
1921

2022
function Bar() {}
2123

22-
// Установим значением прототипа Bar новый экземпляр Foo
23-
Bar.prototype = new Foo();
24+
// Зададим наследование от Foo
25+
Bar.prototype = Object.create(Foo.prototype);
2426
Bar.prototype.foo = 'Hello World';
2527

2628
// Убедимся, что Bar является действующим конструктором
@@ -81,4 +83,5 @@
8183
[2]: http://en.wikipedia.org/wiki/Monkey_patch
8284
[3]: http://prototypejs.org/
8385
[4]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach
86+
[5]: https://github.com/es-shims/es5-shim
8487

0 commit comments

Comments
 (0)