2014-09-20 2 views
1
var Command = function() { 
     var _self = this, 

     //flag to indicate that the operation is running 
     _isRunning = ko.observable(false), 

     //property to save the error message 
     _errorMessage = ko.observable(); 

     //public properties 
     this.isRunning = _isRunning; 
     this.errorMessage = _errorMessage; 
}; 

Почему этот пример использует как частные, так и общедоступные переменные? Является ли это шаблоном проектирования, которым мы следуем?Почему мы используем общедоступную и приватную переменную отдельно

ответ

2

В коде, который вы указали, нет причин. Но я думаю, что позже в этой внешней функции, у вас есть что-то вроде этого:

this.doSomething = function() { 
    if (_isRunning()) { 
     // do one thing 
    } else { 
     // do something else 
    } 
}; 

Причина, по которой локальные переменные так, что это не имеет значения, что this значение функция вызывается.

Это говорит о том, что переменная _self уже решает эту проблему для вас точно так же, делая переменные типа _isRunning и _errorMessage чисто сугубо удобными псевдонимами. Выше всего, а может быть:

this.doSomething = function() { 
    if (_self.isRunning()) { 
     // do one thing 
    } else { 
     // do something else 
    } 
}; 

Там нет особого шаблона дизайна здесь, это просто используя тот факт, что функции, созданные в рамках других функций замыкание более локальных переменных (и несколько других вещей) функции они создано заново.

Смежные вопросы