Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #121 (permalink)  
Старый 09.04.2009, 22:36
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от Riim
простенький примерчик
var o = {};
 
o.__noSuchMethod__ = function ( n , p ) {
    alert( 'name:' + n + '\nparam: ' + p );
}
 
o.foo( 'preved', 'medved' );
Ответить с цитированием
  #122 (permalink)  
Старый 09.04.2009, 22:40
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Zeroglif
простенький примерчик
Заработало, но вот вывод алерта меня удивил:
я ждал: 'name: preved\nparam: medved'
а получил: 'name:foo\nparam: preved,medved'
Ответить с цитированием
  #123 (permalink)  
Старый 09.04.2009, 22:57
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Riim
я ждал: 'name: preved\nparam: medved'
а получил: 'name:foo\nparam: preved,medved'
Почитайте документацию.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #124 (permalink)  
Старый 09.04.2009, 23:00
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Dmitry A. Soshnikov
Почитайте документацию.
Да я уж понял, что второй аргумент это массив. Просто по примеру, это не очевидно.
Ответить с цитированием
  #125 (permalink)  
Старый 09.04.2009, 23:31
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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

Сообщение от kefi
Ну мы говорим о том как сделать Новый Класс из нескольких имеющихся.
1. Расширением (что то же самое, что и реализация интерфейсов в Java).
2. с помощью __noSuchMethod__

Сообщение от kefi
Кто будет непосредственным Предком
Непосредственный предок и будет (тот, на кого будет указывать __proto__ и т.д. до Object.prototype). А дальше к этому __proto__ Вы подмешиваете методы из другого "модуля" - обычным расширением.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #126 (permalink)  
Старый 09.04.2009, 23:42
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

это все замечательно, а кто-нибудь знает примеры, когда множественное наследование удобнее обычного, желательно с указанием причин?
Ответить с цитированием
  #127 (permalink)  
Старый 09.04.2009, 23:48
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

2 x-yuri> А чем Вас не устраивает моя причина - повторное использование кода ?
Ответить с цитированием
  #128 (permalink)  
Старый 09.04.2009, 23:54
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от kefi
А чем Вас не устраивает моя причина - повторное использование кода ?
Тогда можно дальше множественного наследования смотреть. Вот старая статья (не знаю, чья, нашёл в у себя в закладках), может сойти за введение в code reuse.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #129 (permalink)  
Старый 10.04.2009, 00:50
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
А чем Вас не устраивает моя причина - повторное использование кода ?
я просто не сталкивался с ситуациями, когда оно удобнее обычного. Вот и спрашиваю про такие
Ответить с цитированием
  #130 (permalink)  
Старый 10.04.2009, 12:51
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Приглашаем специалиста по JavaScript. Мск, от 75 000 руб. arturus Работа 30 14.01.2009 02:30
JavaScript Developer, Санкт-Петербург (2000 - 2500 $) lampa Работа 3 26.08.2008 15:41
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43