Изучаю Knockout, и в примерах начал встречать использование конструкции "var self = this" в функциях-конструкторах.
'use strict'
function WebmailViewModel() {
// Data
var self = this;
self.prop1 = "prop1";
self.prop2 = "prop2";
self.prop3 = "prop3";
};
function NewWebmailViewModel() {
// Data
this.prop1 = "prop1";
this.prop2 = "prop2";
this.prop3 = "prop3";
};
var mailOne = new WebmailViewModel();
var mailTwo = new NewWebmailViewModel();
console.log(mailOne == mailTwo); //false
for (var key in mailOne) {
console.log(mailOne[key] === mailTwo[key]) //true true true
};
В примере видно, что объекты, создаваемые на основе конструкторов, разумеется, разные, но при этом их свойства идентичны. В чем тогда смысл использования self?