Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Понимание ООП в JavaScript (https://javascript.ru/forum/misc/3070-ponimanie-oop-v-javascript.html)

Dmitry A. Soshnikov 06.04.2009 12:51

Цитата:

Сообщение от kefi
Где Вы создаете тело? Создание тела, например, вот :

И там, и там - "тело". Если это сложно осознать, могу лишь предложить дальше читать о JS, в частности, стандарт.

kefi 06.04.2009 13:07

Цитата:

И там, и там - "тело"
Вы слово "создание" заметили? В Вашем примере тело уже статично создано выше программистом, написавшим код тела, в моем примере - программа создает это тело в зависимости от внешних для программы условий. Есть разница?

Dmitry A. Soshnikov 06.04.2009 13:53

Цитата:

Сообщение от kefi
var A=new Function("a", "b", "this."+ТоЧтоВышеВвелПользо ва тель+"; return a + b" );

var A = function (a, b) {
  this['ТоЧтоВышеВвелПользователь']; // если, конечно, у Вас есть такое свойство/метод
  return a + b;
};


Сути это не меняет, в обоих случаях - динамические функции (FE), создаваемые в рантайме (только в случае с new Function еще и [[scope]] будет только глобальный).

Zeroglif 06.04.2009 20:45

'Function' парсит/eval-ит аргумент, создавая тело и проч., если именно эта eval-ная динамика подразумевается (новый агрумент -> новое тело -> новая функция), то в этом смысле обычная прописанная FE - вариант статичный.

Dmitry A. Soshnikov 06.04.2009 21:15

Zeroglif, ну да (хотя, тело можно и проeval-ить).

kefi 07.04.2009 18:19

Возник вопрос :
Интересно, в Javascript реализуется корректно множественное наследование ? Где-то можно увидеть описание, желательно понятным языком ?

Zeroglif 07.04.2009 19:00

Цитата:

Сообщение от kefi
Интересно, в Javascript реализуется корректно множественное наследование ?

А оно как-то реализуется, чтобы спрашивать про корректность ? ;)

kefi 07.04.2009 19:25

Цитата:

Сообщение от Zeroglif
А оно как-то реализуется, чтобы спрашивать про корректность ?

Хороший ответ. Я сам-то вначале задал вопрос, а потом подумал о таком возможном ответе. Я могу сказать, что - не знаю. Но :
1) Хотел бы узнать, как это сделано в C++, поскольку тоже не знаю, как там, но термин оттуда слышал.
2) Хотелось бы услышать , как кто себе это представляет .

Zeroglif 07.04.2009 20:38

Цитата:

Сообщение от kefi
как кто себе это представляет

Если говорить о SELF-e, откуда JS зачерпнул свои прототипы, то там: "SELF’s inheritance system supports multiple inheritance by allowing an object to have more than one parent." В JS один или "more than one"? Один.

Dmitry A. Soshnikov 07.04.2009 20:50

"Примеси" (обычным расширением). Но физически это, всё-же, расширение, а не ссылки на объект-"примесь" (как, например, в Ruby). Примеси позиционируются как альтернатива множественному наследованию.

В Java, альтернатива - интерфейсы, реализация которых, - есть полное описание (имплементация) методов этих интерфейсов; в JS того же можно добиться обычным написанием этих методов (или "подмешиванием").

update:

Если "js-кроссдвижковость" не столь важна (а именно - код пишется под Mozilla'вцев, Spider Monkey), то можно подключить механизм с __noSuchMethod__, в котором устроить нужную диспетчеризацию по дополнительным родителям (в __noSuchMethod__ управление передастся, когда вся цепь прототипов будет просмотрена, и нужный метод не будет найден).


Часовой пояс GMT +3, время: 21:08.