Показать сообщение отдельно
  #1 (permalink)  
Старый 23.12.2013, 00:06
Интересующийся
Отправить личное сообщение для finestra Посмотреть профиль Найти все сообщения от finestra
 
Регистрация: 28.02.2013
Сообщений: 13

как спрятать переменные
Так называемые «классы» в 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) 
        };
    };
};


Хотелось бы знать, какие варианты «классов» еще существуют?
Ответить с цитированием