Mахmахmахimus,
Class.staticProperty
var Class = function (value) {
this.value = value;
};
Class.staticProperty = 42;
Class.prototype = {
getAnswer: function () {
return Class.staticProperty + this.value;
}
};
var c = new Class(100500);
alert(c.getAnswer());
Но в настоящих классах можно и так и через this. То есть если ты напишешь this.staticProperty = 777, то и Class.staticProperty должно стать 777, без сеттеров не обойтись, причем это должно отразиться на всех инстансах (везде this.staticProperty должно стать 777), то есть надо будет еще хранить ссылки на все инстансы
МаксМаксМаксимус, лучше б ты время не тратил, это все незачем.. Зачем программировать на JS как на C ++? Это другой язык со своими особенностями. И даже если и получится у тебя разграничить права доступа к полям, надо еще чтоб наследование работало
Обычно хватает чего то типа:
Function.prototype.extend = function (prototype) {
if (typeof prototype !== "object") {
prototype = {};
}
var self = this, constructor = (prototype.hasOwnProperty("constructor") &&
typeof prototype.constructor === "function") ? prototype.constructor :
function () { self.apply(this, arguments); }, F = function () {}, property;
F.prototype = self.prototype;
constructor.prototype = new F();
for (property in prototype) if ( prototype.hasOwnProperty(property) ) {
constructor.prototype[property] = prototype[property];
}
constructor.prototype.constructor = constructor;
constructor.superclass = self.prototype;
return constructor;
}