Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.01.2011, 07:26
Аспирант
Отправить личное сообщение для kidar2 Посмотреть профиль Найти все сообщения от kidar2
 
Регистрация: 05.01.2010
Сообщений: 64

Интерфейсы в javascript
Привет.
На вашем сайте читал статью про наследование и ООП. А делал ли кто-то интерфейсы на javascript ? Причём чтобы любой класс мог наследоваться от какого-то другого класса и реализовывать n-ое количество интерфейсов ?
Ответить с цитированием
  #2 (permalink)  
Старый 25.01.2011, 09:29
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

интерфейсов и классов в JS - нет (но велосипедов реализации до кучи), но наследование есть, такое о котором вы уже прочитали.
Ответить с цитированием
  #3 (permalink)  
Старый 25.01.2011, 11:55
Аспирант
Отправить личное сообщение для kidar2 Посмотреть профиль Найти все сообщения от kidar2
 
Регистрация: 05.01.2010
Сообщений: 64

Мне вот хотя бы один пример велосипеда с интерфейсами посмотреть...
Ответить с цитированием
  #4 (permalink)  
Старый 25.01.2011, 11:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Если классы ещё кому-то нужны в JS, то интерфейсы точно не нужны, поэтому и велосипедов нет.
Ответить с цитированием
  #5 (permalink)  
Старый 25.01.2011, 13:14
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kidar2
Мне вот хотя бы один пример велосипеда с интерфейсами посмотреть...
классы: http://habrahabr.ru/blogs/javascript/68004/
интерфейсы: http://knol.google.com/k/programming...r-i-mean-faked
http://files.trygve-lie.com/examples...ect_interface/
давно что-то еще читал по этой теме, но где припомнить не могу...

Сообщение от Kolyaj
Если классы ещё кому-то нужны в JS
Интерфейс — это набор объявлений методов, который позволяет несвязанным объектам взаимодействовать друг с другом, что позволяет расширяемому классу принимать реализации других классов. Что по сути можно назвать множественным наследованием.

Как бы это отрицательно сказалось если бы в JS были интерфейсы?
По моему если есть классы, то не использовать интерфейсы не логично.
В AS они есть и это же прекрасно, почему бы в JS не реализовать?
Ответить с цитированием
  #6 (permalink)  
Старый 25.01.2011, 13:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от monolithed
Интерфейс — это набор объявлений методов, который позволяет несвязанным объектам взаимодействовать друг с другом, что позволяет расширяемому классу принимать реализации других классов.
Спасибо, капитан. Но JS позволяет объектам взаимодействовать друг с другом и без интерфейсов.

Сообщение от monolithed
В AS они есть и это же прекрасно, почему бы в JS не реализовать?
Приведите пример, показывающий, что "а вот если бы были интерфейсы, то я бы такое сделал...".
Ответить с цитированием
  #7 (permalink)  
Старый 25.01.2011, 14:42
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Kolyaj
Но JS позволяет объектам взаимодействовать друг с другом и без интерфейсов.
я к тому, что и классы в JS нет необходимости по этой логике реализовывать...

Сообщение от Kolyaj
Приведите пример, показывающий, что "а вот если бы были интерфейсы, то я бы такое сделал...".
нет у меня пока таких идей, т.к. обсуждать нечего, но удобства интерфейсов очевидны:

interface A { 
    function foo():void; 
}

interface B { 
    function bar():void; 
}
 
class myClass implements A, B { 
    public function foo():void {} 
    public function bar():void {} 
}

причем, интерфейс может же и выступать как отдельная сущность:
public interface A {
  function fooA():void;
}

public interface B extends A {
  function fooB():void;
}

public interface C {
  function fooC():void;
}

public interface D {
  function fooD():void;
}

public interface E extends C, D {
  function fooE():void;
}


Но JS, мы тоже самое через одно место будем делать, в замен наглядности и минимального использования кода.

Kolyaj, только не стоит думать, что меня что-то в JS не устраивает или ограничивает, просто ничего плохого в реализации интерфейсов я не вижу, может по тому, что в я к ним привык в AS и PHP...

Последний раз редактировалось monolithed, 25.01.2011 в 14:47.
Ответить с цитированием
  #8 (permalink)  
Старый 25.01.2011, 14:47
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от monolithed
я к тому, что и классы в JS нет необходимости по этой логике реализовывать...
А никто их и не реализовывает, ибо невозможно. Реализуют только похожий синтаксис, семантика остаётся прототипная.

Сообщение от monolithed
interface A {
function foo():void;
}

interface B {
function bar():void;
}

class myClass implements A, B {
public function foo():void {}
public function bar():void {}
}
Чем это отличается в динамическом языке от
class myClass {
    public function foo():void {}
    public function bar():void {}
}
?
Ответить с цитированием
  #9 (permalink)  
Старый 25.01.2011, 15:39
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Kolyaj
Чем это отличается в динамическом языке от
в первом случае класс myClass реализует интерфейсы A и B.
Во втором случае определяется класс без конструктора, что в AS принято называть реализацией абстрактных методов (хотя их там и нет формально).

Я честно не понял вашу мысль, наверно имелось ввиду это?
interface myClass  { 
    public function foo(param:int = 0):void
}

class A implements myClass { 
    public function foo(param:int = 1):void {} 
}
Ответить с цитированием
  #10 (permalink)  
Старый 25.01.2011, 15:42
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ответьте для себя на вопрос: "Зачем в статических языках нужны интерфейсы?". После чего можно будет ответить на другой вопрос "Почему в динамических языках интерфейсы не нужны?".
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] 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