powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Наследование в JavaScript
10 сообщений из 10, страница 1 из 1
Наследование в JavaScript
    #39878822
Muxaul990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
В книжке по программированию приведён вот такой код:

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( ... )? Я подозреваю, что на этапе подъёма функций, то есть до исполнения основного кода.
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39878832
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39878865
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxaul990У меня возник вопрос, когда происходит вызов функции inheritPrototype( ... )? Я подозреваю, что на этапе подъёма функций, то есть до исполнения основного кода.Два ответа:
- Никогда не происходит. Если ты сам эти функции не вызовешь где-нибудь в коде, они выполняться не будут.
- Что-то подобное этим функциям выполняется внутри браузера когда он пропускает javascript код через парсер.
Можешь считать это чисто учебными функциями для иллюстрации того как делается наследование. Кривыми функциями, но где-то что-то близкое к правде там есть.
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39878896
Muxaul990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

всё оказалось достаточно просто! Функции, которые объявлены с ключевым словом function - поднимаются до исполнения основного кода, а функция inheritPrototype(SubType, SuperType); - это часть основного кода, в основном коде она и вызывается.

Прелесть языка JavaScript в том, что функцию можно создать ВООБЩЕ в любом месте и если она будет определена так: function F(arguments) { ... } , то интерпретатор прочитает её где бы она не находилась. Вот это то свойство JavaScript я и забыл ))

Модераторы форума - вопрос решён!
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39878900
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxaul990всё оказалось достаточно просто! Функции, которые объявлены с ключевым словом function - поднимаются до исполнения основного кода,
когда выполнится это
Код: javascript
1.
2.
3.
(function ccc(){
    console.log('ooooooooooooo');
})();



??
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39878936
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxaul990Прелесть языка JavaScript в том, что функцию можно создать ВООБЩЕ в любом месте и если она будет определена так: function F(arguments) { ... } , то интерпретатор прочитает её где бы она не находилась. Вот это то свойство JavaScript я и забыл ))
Нет. Есть разница между:
Код: javascript
1.
2.
3.
function foo() {
    // bla-bla-bla
}


и
Код: javascript
1.
2.
3.
var foo = function() {
    // bla-bla-bla
}
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39879127
Muxaul990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,

вот я как раз это же самое и написал :)

Функция такого вида:

function foo() {
// bla-bla-bla
}


поднимается до исполнения основного кода и для интерпретатора JavaScript не важно где ты её определишь, хоть в конце тела основной программы.

Это функция-выражение и она определяется исключительно в теле основной программы:

var foo = function() {
// bla-bla-bla
}
В моём куске кода я такие функции не использую и мой вопрос касался функций первого вида. По сути, имя функции foo есть переменная, хранящая ссылку на объект function() { // bla-bla-bla } .
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39879131
Muxaul990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

(function ccc(){
console.log('ooooooooooooo');
})();


это называется функция немедленного вызова, она определяется и тут же исполняется. В моём примере, такие функции не используются и мой вопрос касался конкретно классических функций вида : function F() { <тело функции> } . Они поднимаются до исполнения основного кода и выполняются в момент их вызова.
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39879145
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxaul990Они поднимаются до исполнения основного кода и выполняются в момент их вызова.
Ты нам про это рассказать хотел, учитель?
...
Рейтинг: 0 / 0
Наследование в JavaScript
    #39879152
Muxaul990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,

если ты знаешь об этом - хорошо, но не ты один читаешь этот форум, может быть кому-то эта информация будет полезной.

Я просто хотел узнать в какой момент времени вызывается функция inheritPrototype() в моём коде; потом присмотрелся к коду и всё понял.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Наследование в JavaScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]