Показать сообщение отдельно
  #51 (permalink)  
Старый 16.02.2012, 14:26
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

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;
}
__________________
readOnly

Последний раз редактировалось poorking, 16.02.2012 в 14:38.
Ответить с цитированием