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

Zeroglif 09.04.2009 22:36

Цитата:

Сообщение от Riim
простенький примерчик

var o = {};
 
o.__noSuchMethod__ = function ( n , p ) {
    alert( 'name:' + n + '\nparam: ' + p );
}
 
o.foo( 'preved', 'medved' );

Riim 09.04.2009 22:40

Цитата:

Сообщение от Zeroglif
простенький примерчик

Заработало, но вот вывод алерта меня удивил:
я ждал: 'name: preved\nparam: medved'
а получил: 'name:foo\nparam: preved,medved'

Dmitry A. Soshnikov 09.04.2009 22:57

Цитата:

Сообщение от Riim
я ждал: 'name: preved\nparam: medved'
а получил: 'name:foo\nparam: preved,medved'

Почитайте документацию.

Riim 09.04.2009 23:00

Цитата:

Сообщение от Dmitry A. Soshnikov
Почитайте документацию.

Да я уж понял, что второй аргумент это массив. Просто по примеру, это не очевидно.

Dmitry A. Soshnikov 09.04.2009 23:31

Цитата:

Сообщение от kefi
вот и разветвление.

Ещё раз: у объекта одна, единственная, цепь прототипов.

Цитата:

Сообщение от kefi
Ну мы говорим о том как сделать Новый Класс из нескольких имеющихся.

1. Расширением (что то же самое, что и реализация интерфейсов в Java).
2. с помощью __noSuchMethod__

Цитата:

Сообщение от kefi
Кто будет непосредственным Предком

Непосредственный предок и будет (тот, на кого будет указывать __proto__ и т.д. до Object.prototype). А дальше к этому __proto__ Вы подмешиваете методы из другого "модуля" - обычным расширением.

x-yuri 09.04.2009 23:42

это все замечательно, а кто-нибудь знает примеры, когда множественное наследование удобнее обычного, желательно с указанием причин?

kefi 09.04.2009 23:48

2 x-yuri> А чем Вас не устраивает моя причина - повторное использование кода ?

Dmitry A. Soshnikov 09.04.2009 23:54

Цитата:

Сообщение от kefi
А чем Вас не устраивает моя причина - повторное использование кода ?

Тогда можно дальше множественного наследования смотреть. Вот старая статья (не знаю, чья, нашёл в у себя в закладках), может сойти за введение в code reuse.

x-yuri 10.04.2009 00:50

Цитата:

А чем Вас не устраивает моя причина - повторное использование кода ?
я просто не сталкивался с ситуациями, когда оно удобнее обычного. Вот и спрашиваю про такие

kefi 10.04.2009 12:51

2 x-yuri > Так а чем "эти ситуации" могут быть отличны от "обычных" ?
При обычном наследовании от от линейной неразветвляющейся цепи предка мы :
1) используем повторно код предка и его линейной цепи предков
2) используем их идеи и модифицируем их своими новыми

При множественном наследовании от неколькоих предков (генеалогическая цепь которых когда-то разветвилась от одного прапра...предка ) мы :
1) используем повторно код (Которого уже БОЛЬШЕ чем в первом случае, поэтому эффективнее повторное использование ) этих нескольких предков
2) используем их идеи (которых БОЛЬШЕ , чем в первом случае, поэтому мы становимся богаче идеями) и модифицируем их своими новыми .

Т.е. получается отличие только в богатстве возможностей новой модели, слово "удобнее" не очень здесь подходит, поскольку реализовать это богадство труднее .


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