| 
 | 
| 
 
Наследование в 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&msg=39878896&tid=1443629]:  | 
    0ms | 
get settings:  | 
    7ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    55ms | 
get topic data:  | 
    12ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    53ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 13ms | 
| total: | 162ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.