Показать сообщение отдельно
  #7 (permalink)  
Старый 23.12.2013, 17:24
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

можно сделать искусственный вариант, но придется вручную освобождать память, если объект более не нужен:
var Base = (function() {
    var prnum = 0, privates = {};
    function cls(name) {
        this._id = ++prnum;
        privates[this._id]= {
            name: name 
        };
    }
    cls.prototype.getName = function() {
        var data = privates[this._id];
        return data.name;
    };
    cls.prototype.destroy = function() {
        if (this._id) {
            delete privates[this._id];
            delete this._id;
        }
    };
    return cls;
})();

var obj1 = new Base("n1");
var obj2 = new Base("n2");
var obj3 = new Base("n333");
alert(obj1.getName() + "  " + obj2.getName() + "  " + obj3.getName());
obj1.destroy(); // obj1 теперь убит


теперь вместо приватных данных виден только номер.
хотя его тоже можно поменять.
так что это всё особого практического смысла не имеет.
Ответить с цитированием