Задать вопрос

Замыкания, что не так?

В книге "javascript, профессиональные приемы программирования" есть конструктор :
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: "Bob",
age: 44
});


Когда вызываю user.getname() выдает ошибку .. очень долго думая почему ето не работает , я визвал етот метод так , getname.call(user) и всё работает ...
Объясните пожалуйста , что хотел сказать автор . и почему это работает так getname.call(user) , но так user.getname() не работает
  • Вопрос задан
  • 2436 просмотров
Подписаться 3 Оценить Комментировать
Решение пользователя Алексей Черемисин К ответам на вопрос (3)
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Оператор this яваскрипте не всегда указывает на то, на что хотелось бы. Вот javascript.ru/Function/call и вот habrahabr.ru/post/199456 на почитать. А всё потому, что в яваскрипте объекты, как таковые, не совсем объекты. Я так вообще this стараюсь не применять, ибо странный он...
Ответ написан
Комментировать