Показать сообщение отдельно
  #1 (permalink)  
Старый 23.10.2011, 13:52
Новичок на форуме
Отправить личное сообщение для hat_tab Посмотреть профиль Найти все сообщения от hat_tab
 
Регистрация: 23.10.2011
Сообщений: 4

Ошибка в листинге - привилегированный метод. Джон Рейсиг
Добрый день, JavaScript Developer-ы !

Читаю книгу Д. Рейсига - "JavaScript. Профессиональные приемы программирования" [2008].

Остановился на привилегированных методах, листинг 2.25 ( Пример динамически генерируемых методов при создании нового экземпляра объекта ).

Вот собственно код:
function User(properties) {
        
        for (var i in properties) {
        
            (function(){
            
                this["get" + i] = function() {
                    return properties[i];
                }
                
                this["set" + i] = function(val) {
                    properties[i] = val;
                }
            })();
        }        
    }
    
var user = new User({
    name : "hat_tab",
    age : 100500 
});
    
alert(user.getname());


В результате, у объекта User нет такого метода getname(). Если сделать без "замыкания", то такой метод есть, правда значение его 100500.

Помогите разобраться где ошибка.
Ответить с цитированием