Так называемые «классы» в js, никогда не создавал. Мне нужно решить две проблемы, с которыми я столкнулся. Вот они:
1. Необходимо спрятать данные.
2. Методы не должны определяться каждый раз при создании объекта.
Вот варианты «классов»:
// вариант 1
var Base = function (name) {
this.name = name; // переменная видна, как ее спрятать? Проблема №1
};
Base.prototype.getName = function………………и т.д
// вариант 2
var Base = function (name) {
var getName = function () { return name; }; // проблема №2
return { getName: getName };
};
// вариант 3
var Base = function () {
var getName = function () { return this.name; }; // замыкаем метод
return function (name) {
var obj = {name: name};
return {
getName: getName.bind(obj)
};
};
};
Хотелось бы знать, какие варианты «классов» еще существуют?