Я пытаюсь создать класс без прототипов. Вот пример:`this` внутри функции, которая не является прототипом класса
test = (function() {
this.value = 1;
this.print = function() {
console.log(this.value);
};
return this;
})();
Это прекрасно работает по назначению. То, что я не понимаю, это this.value
внутри функции this.print
. Как this.print
правильно знать, что любые ссылки на this
ссылаются на test
, а не window
? Любая функция, определенная через this.___ = function(){}
, автоматически добавит this
в качестве контекста?
[Частные члены в JavaScript] (http://javascript.crockford.com/private.html) - читайте это. – dirkgently
для тех, кто использует coffeescript как я, вы можете «закрыть эту' переменную », как в http://stackoverflow.com/a/10965498/927092, используя' => 'вместо' -> 'в вашей функции –