JavaScript-дежавю






Разработчики, знакомые с реализацией объектно-ориентированного подхода в языках вроде PHP или Java, часто испытывают трудности, пытаясь постичь концепции прототипного наследования, используемого в JavaScript. Этот факт вдохновил разработчиков из Indigo United создать dejavu — JavaScript-библиотеку, реализующую концепции традиционного ООП-наследования в рамках парадигмы прототипного.

dejavu


Dejavu предлагает разработчикам классы (обычные, абстрактные и final классы), интерфейсы, примеси (mixins), открытые (public), закрытые (private) и статические свойства, context bindings для функций, проверку сигнатур методов и многое другое.

Чтобы наглядно увидеть о чём идёт речь, взгляните на объявление класса в dejavu:

var Person = Class.declare({
    $name: 'Person',
    _name: null,
    __pinCode: null,

    initialize: function (name, pinCode) {
       this._name = name;
        this.__pinCode = pinCode;
        setTimeout(this._logName.$bind(this), 1000);
    },

    getName: function () {
        return this._name;
    },
    _logName: function () {
        console.log(this._name);
    }
});

Библиотека поставляется в двух вариантах: обычном и AMD. Последний вариант позволяет ускорить процесс разработки за счёт исключения необходимости перекомпиляции вбсего кода каждый раз. каждый из вариантов может работать в двух режимах: strict и loose. В первом режиме производится больше разнообразных проверок, что может быть полезно при разработке, в то время как второй больше предназначен для продакшн-работы и за счёт уменьшения количества проверок позволяет увеличить производительность.

Система компиляции включает в себя оптимизатор, позволяющий получить на выходе более производительный код, а также имеющий режимы, оптимизирующие выходной код для node.js и V8.

Библиотеку можно получить на GitHub и там же ознакомиться с документацией и примерами использования.