У меня есть следующий код: CoffeeScriptCoffeeScript частного класса Переменные экземпляра
class Person
secret = 0
constructor: (@name, @age, @alive) ->
inc: -> secret++
, составляемые на следующий код JavaScript:
var Person;
Person = (function() {
var secret;
secret = 0;
function Person(name, age, alive) {
this.name = name;
this.age = age;
this.alive = alive;
}
Person.prototype.inc = function() {
return secret++;
};
return Person;
})();
В настоящее время secret
разделяется между всеми экземплярами Person
. Есть ли способ сделать secret
частной переменной экземпляра в CoffeeScript?
Общепринято использовать соглашения об именах для обозначения «частных» переменных. Подобно Python, это обычно обозначается '_var', то есть' _secret' в этом случае. –
@AaronDufour То, что вы предлагаете, - это еще одна попытка подражать функции частных членов. Я хочу сказать, что разработчик JavaScript должен освободить свой разум от такой концепции, потому что, в конце концов, все подобные решения могут стать чрезмерным применением без каких-либо практических целей. –
Он не подражает частным членам; это только делает более понятным, как класс предназначен для использования. Вызов переменной 'secret', вероятно, достаточно, но префикс подчёркивания является более общим решением. Это особенно полезно, если класс подвергается воздействию третьих сторон. –