Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 26.01.2011, 21:10
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Возвращаясь к разговору об интерфейсах в js, стоит сказать, что интерфейсы неявно представлены в языке в виде методов call и apply.
Ответить с цитированием
  #22 (permalink)  
Старый 26.01.2011, 22:03
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а можно развернуть мысль?
Ответить с цитированием
  #23 (permalink)  
Старый 26.01.2011, 23:09
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Попробую более развернуто. Допускаю, выскажу несколько весьма очевидных мыслей.

Интерфейсы суть вариант множественного наследования. Объекты, порожденные от разных классов, но реализующих один интерфейс, имеют одинаковое поведение. А это уже полиморфизм. То есть, разные объекты, наследующие одинаковый интерфейс имеют одинаковый контекст вызова. Не совсем точно, но (как мне кажется) близко по смыслу к идее вызова методов одного объекта в контексте другого. Что и выполняют эти функции.

var x = [1.2, 3.4, 5];
var y = ''.split.call(x, /\W/);

alert(x);
alert(y);

Последний раз редактировалось with-love-from-siberia, 26.01.2011 в 23:32.
Ответить с цитированием
  #24 (permalink)  
Старый 27.01.2011, 00:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

мысль более-менее понятна, но считаю натянута. Назвать контекстом вызова такую абстрактную сущность как интерфейс... Причем получается, что берем мы метод у конкретного объекта, а вызываем в контексте абстрактного интерфейса. Как-то все вверх ногами

Да и просто, интерфейсы не нужны в javascript. Обоснование. Зачем нужны интерфейсы:
1) возможность работать с разными объектами через один и тот же интерфейс (поддерживается автоматом)
2) проверка типов (бессмысленна в языке с динамической типизацией)
3) некое документирование кода (имхо, имеет смысл только в дополнение к пунктам выше)
Ответить с цитированием
  #25 (permalink)  
Старый 27.01.2011, 10:39
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Мои слова не следует понимать буквально. Речь идет, всего лишь, об аналогиях.

Цитата:
интерфейсы не нужны в javascript
Конечно не нужны. Они не нужны в динамических языках.
Ответить с цитированием
  #26 (permalink)  
Старый 28.01.2011, 06:59
Интересующийся
Отправить личное сообщение для sysif Посмотреть профиль Найти все сообщения от sysif
 
Регистрация: 09.12.2010
Сообщений: 12

Если считать, что интерфейсы - это соглашения в коде между разными частями в системе, то имхо они вполне имеют право на существование в js.
Известный факт, что в js часто взаимодействие между разными объектами оборачивается головной болью.
Т.о. в js функцией интерфейса могла бы быть просто проверка, что объект реализует заданный набор методов с указанными сигнатурами.
Примерно так были реализованы интерфейсы в microsoft ajax - http://www.cristiandarie.ro/asp-ajax/Person3.html. Хотя, в общем-то неудачный пример. Еще интерфейсы вроде есть в php.

P.S. Это конечно, если оставить в стороне тот факт, что реализация этого дела поверх js - тот еще костыль

Последний раз редактировалось sysif, 28.01.2011 в 07:06.
Ответить с цитированием
  #27 (permalink)  
Старый 28.01.2011, 07:58
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

еще раз, интерфейсы не нужны в языках с динамической типизацией. А головная боль может быть лишь у тех, кто пытается программировать на js, как будто это какой-нибудь java или что еще...
Ответить с цитированием
  #28 (permalink)  
Старый 28.01.2011, 09:08
Интересующийся
Отправить личное сообщение для sysif Посмотреть профиль Найти все сообщения от sysif
 
Регистрация: 09.12.2010
Сообщений: 12

Может быть, вы тогда с такой же уверенностью скажете, зачем в языке с динамической типизацией конструкции instanceOf и typeof ?

Последний раз редактировалось sysif, 28.01.2011 в 09:43.
Ответить с цитированием
  #29 (permalink)  
Старый 28.01.2011, 09:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

прям в тупик загнали Может можете какой-нибудь реальный пример, где бы в js пригодились интерфейсы?

и очень интересует всем кроме меня известный факт про головные боли от взаимодействия объектов?
Ответить с цитированием
  #30 (permalink)  
Старый 28.01.2011, 10:30
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
головные боли от взаимодействия объектов
Меня не интересует. Всё зависит от архитектуры.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
JavaScript разработчик (Яндекс, Москва) antonova Работа 2 08.07.2010 19:44
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24