Этот код находится в KnockoutJS ViewModel:KnockoutJS: Функция Scope ошибок
function myViewModel()
{
this.prop1 = ko.observable(123);
this.prop2 = ko.observable("Hello");
..
..
}
myViewModel.prototype.func1 = function()
{
alert(this.prop1()); //works fine here
myTimer = setTimeout(function()
{
alert(this.prop1()); //this.prop1() raises an undefined error
}, 3000); //from console: Uncaught TypeError: undefined is not a function
};
Почему свойство не распознается в функции обратного вызова таймера? Похож на проблему с областью, но я не могу ее решить.
Здравствуйте, Jeroen, и спасибо миллион; кто это сделал. Вы посоветовали мне читать в JavaScript области в другом посте, но, к сожалению, я этого не сделал. Я никогда не понимал ключевое слово self. Большое спасибо. – iSofia
Рад, что это помогло. Даже если у вас нет времени на это читать (это плотная тема), просто не забудьте всегда начинать свои конструкторские функции с помощью 'var self = this;' и использовать 'self' вместо' this' всюду, и вы будете избавлены от множества проблем. – Jeroen
Я обязательно сделаю это. Спасибо за подсказку и за решение. Ты спасатель жизни, Джеруэн. – iSofia