За последние 24 часа нас посетили 18384 программиста и 1656 роботов. Сейчас ищут 1718 программистов ...

go.js - классы для JavaScript и другое

Тема в разделе "Решения, алгоритмы", создана пользователем vasa_c, 22 апр 2011.

  1. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    go.js 0.2

    - Эмуляция "классов"
    - Наследовение
    - Связывание методов с контекстом объекта
    - Доступ к цепи предков и предыдущим реализациям методов
    - Статические методы, абстрактные классы, разрушение объектов

    Брать здесь или клонировать тут
     
  2. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Прям вирус какой-то
     
  3. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Да нет, просто словесный мусор.
     
  4. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Используй GitHub вместо GoogleCode, очень рекомендую. Сам изначально использовался GC, но в итоге таки передел на GH и ни грамма не жалею. Там сообщество, там куча возможностей, там - намного круче.

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

    [js]var MyClass = Class({
    Static: {
    staticMethod: function() {
    }
    },
    initialize: function () {
    // constructor
    },
    dynamicMethod: function () {
    },
    abstractMethod: Class.abstract
    });[/js]
     
  5. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    TheShock, спасибо за отзыв!

    Да, я всё собираюсь. Но сначала нужно побороть лень и перейти на git, а потом опять побороть лень и перейти на GitHub.

    С мутулзом плотно не работаю и, наверное, где-то ошибаюсь, но попробую немного постоять на своей позиции.

    У самого мутулза решения (binds, static) вообще нет. Это решение нужно собирать из плагинов. Static'а вообще что-то не нашёл.

    С точки зрения интерфейса мутатор/не мутатор, это ИМХО вкусовщина. В тех языках, которые я пытался пародировать все методы идут одним списком: и статические и динамические. Статические, обычно, помечаются модификатором static (у меня его роль выполняет суфикс). Через мутатор же - метод в одном месте, его атрибуты в другом. Интересно узнать какой это метод - нужно листать наверх, искать мутатор (а то и в родительский класс лезть). Моему ИМХУ это не по душе.

    В моей предыдущей версии так же были абстрактные методы. И так же Class.abstract :) Исключение при вызове. Плюс ещё сканился весь список методов и если есть абстрактные, но класс не помечен абстрактным, то бросалось исключение. В этой версии подумал, что нафиг нужны эти телодвижения при том, что практически этим не пользуюсь.

    Родительский метод с одной стороны красив, с другой стороны слишком много магии за ним.
    Все мои функции, которые я так старательно описывал, на самом деле внезапно оказываются не мои функции, а какие-то врапперы над ними. И this.parent() это не конкретный метод, а непойми что.

    Я решил остаться чуть поближе к корням ). Вызов чуть длинее, но с учётом того, что он достаточно редок, это не так важно.
     
  6. StockShop

    StockShop Активный пользователь

    С нами с:
    17 май 2011
    Сообщения:
    1
    Симпатии:
    0
    Адрес:
    Украина
    По моему отличная и нужная штучка! Спасибо!