Ошибка в листинге - привилегированный метод. Джон Рейсиг
Добрый день, 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, время: 03:58. |