|
|
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
Добрый день! В книжке по программированию приведён вот такой код: function inheritPrototype (SubType, SuperType) { var prototype = Object(SuperType.prototype); prototype.constructor = SubType; SubType.prototype = prototype; } function SuperType(){ this.property = true; }; SuperType.prototype.getSuperValue = function(){ return this.property; } function SubType(){ SuperType.call(this); this.proper = false; } inheritPrototype(SubType, SuperType); SubType.prototype.myFunc = function(){ return this.property; } var o = new SubType(); console.log(o); Наследование происходит так: inheritPrototype(SubType, SuperType);, без вызова конструктора "класса-родителя". Конструктор вызывается единожды - при создании экземпляра "класса". У меня возник вопрос, когда происходит вызов функции inheritPrototype( ... )? Я подозреваю, что на этапе подъёма функций, то есть до исполнения основного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2019, 13:22 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
Muxaul990У меня возник вопрос, когда происходит вызов функции inheritPrototype( ... )? Я подозреваю, что на этапе подъёма функций, то есть до исполнения основного кода.Два ответа: - Никогда не происходит. Если ты сам эти функции не вызовешь где-нибудь в коде, они выполняться не будут. - Что-то подобное этим функциям выполняется внутри браузера когда он пропускает javascript код через парсер. Можешь считать это чисто учебными функциями для иллюстрации того как делается наследование. Кривыми функциями, но где-то что-то близкое к правде там есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2019, 16:15 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
White Owl, всё оказалось достаточно просто! Функции, которые объявлены с ключевым словом function - поднимаются до исполнения основного кода, а функция inheritPrototype(SubType, SuperType); - это часть основного кода, в основном коде она и вызывается. Прелесть языка JavaScript в том, что функцию можно создать ВООБЩЕ в любом месте и если она будет определена так: function F(arguments) { ... } , то интерпретатор прочитает её где бы она не находилась. Вот это то свойство JavaScript я и забыл )) Модераторы форума - вопрос решён! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2019, 18:56 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
Muxaul990всё оказалось достаточно просто! Функции, которые объявлены с ключевым словом function - поднимаются до исполнения основного кода, когда выполнится это Код: javascript 1. 2. 3. ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2019, 19:27 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
Muxaul990Прелесть языка JavaScript в том, что функцию можно создать ВООБЩЕ в любом месте и если она будет определена так: function F(arguments) { ... } , то интерпретатор прочитает её где бы она не находилась. Вот это то свойство JavaScript я и забыл )) Нет. Есть разница между: Код: javascript 1. 2. 3. и Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2019, 20:33 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
fkthat, вот я как раз это же самое и написал :) Функция такого вида: function foo() { // bla-bla-bla } поднимается до исполнения основного кода и для интерпретатора JavaScript не важно где ты её определишь, хоть в конце тела основной программы. Это функция-выражение и она определяется исключительно в теле основной программы: var foo = function() { // bla-bla-bla } В моём куске кода я такие функции не использую и мой вопрос касался функций первого вида. По сути, имя функции foo есть переменная, хранящая ссылку на объект function() { // bla-bla-bla } . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2019, 10:50 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
вадя, (function ccc(){ console.log('ooooooooooooo'); })(); это называется функция немедленного вызова, она определяется и тут же исполняется. В моём примере, такие функции не используются и мой вопрос касался конкретно классических функций вида : function F() { <тело функции> } . Они поднимаются до исполнения основного кода и выполняются в момент их вызова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2019, 10:54 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
Muxaul990Они поднимаются до исполнения основного кода и выполняются в момент их вызова. Ты нам про это рассказать хотел, учитель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2019, 11:06 |
|
||
|
Наследование в JavaScript
|
|||
|---|---|---|---|
|
#18+
fkthat, если ты знаешь об этом - хорошо, но не ты один читаешь этот форум, может быть кому-то эта информация будет полезной. Я просто хотел узнать в какой момент времени вызывается функция inheritPrototype() в моём коде; потом присмотрелся к коду и всё понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2019, 11:12 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=13&tid=1443629]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 137ms |

| 0 / 0 |
