JavaScript классы

Я понимаю базовые псевдоклассы JavaScript:

function Foo(bar) {
    this._bar = bar;
}

Foo.prototype.getBar = function() {
    return this._bar;
};

var foo = new Foo('bar');
alert(foo.getBar()); // 'bar'
alert(foo._bar); // 'bar'

Я также понимаю шаблон модуля, который может эмулировать инкапсуляцию:

var Foo = (function() {
    var _bar;

    return {
        getBar: function() {
            return _bar;
        },
        setBar: function(bar) {
            _bar = bar;
        }
    };
})();

Foo.setBar('bar');
alert(Foo.getBar()); // 'bar'
alert(Foo._bar); // undefined

Но у обоих этих шаблонов есть не-ООП-подобные свойства. Первый не обеспечивает инкапсуляцию. Последнее не обеспечивает реализации. Оба шаблона могут быть изменены для поддержки псевдонаследования.

Я хотел бы знать, существует ли какая-либо модель, которая позволяет:

Inheritance Encapsulation (support for "private" properties/methods) Instantiation (can have multiple instances of the "class", each with its own state)

Ответы на вопрос(8)

Ваш ответ на вопрос