Ошибка в листинге - привилегированный метод. Джон Рейсиг
Добрый день, 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. Помогите разобраться где ошибка. |
function User(properties) {
var that = this;
for (var i in properties) {
(function(i){
that["get" + i] = function() {
return properties[i];
}
that["set" + i] = function(val) {
properties[i] = val;
}
})(i);
}
}
var user = new User({
name : "hat_tab",
age : 100500
});
alert(user.getname());
у внутренней функции свой this. |
Riim, спасибо!
|
| Часовой пояс GMT +3, время: 11:02. |