А причем тут Enum?
Чем не нравится такой вариант?
function A(name) {
this.name = name;
}
A.prototype.toString = function() {
return this.name;
};
A.A1 = new A("1");
A.A2 = new A("2");
A.A3 = new A("2");
Более строгий, ES5 (IE8- отпадает) вариант:
function A(name) {
this._name = name;
}
A.prototype = {
get name() { return this._name },
set name(value) { this._name = value },
toString: function() { return this.name }
};
Object.defineProperty(A.prototype, 'constructor', {value: A});
A.A1 = new A("1");
A.A2 = new A("2");
A.A3 = new A("2");