Показать сообщение отдельно
  #1 (permalink)  
Старый 11.02.2012, 20:09
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Классы в javascript?
function Cat() {
	var private = Object.create(arguments.callee.prototype), public = Object
	        .create(private), arg = [ private, public ];
	for ( var i = 0; i < arguments.length; i++) {
		arg.push(arguments[i])
	}
	return arguments.callee.init.apply(this, arg)
}
Cat.addMethod = function(name, call) {
	this.prototype[name] = function() {
		var self = this.__proto__, private = self;
		this.__proto__ = Cat.prototype;
		self.__proto__ = this;
		var arg = [ self, private, this ]
		for ( var i = 0; i < arguments.length; i++) {
			arg.push(arguments[i])
		}
		call.apply(this, arg)
		self.__proto__ = Cat.prototype;
		this.__proto__ = self;
	}
}

Cat.init = function(private, public) {
	// приватные свойства каждой сущности
	private.name = 'приватное имя'

	// публичные свойства каждой сущности
	public.age = 'публичный возраст'

	return public
}

// добавляем метод
Cat.addMethod('sayName', function(self, private, public) {
	alert(self.name)
})
// добавляем метод
Cat.addMethod('setName', function(self, private, public, name) {
	private.name = name
	public.age = '200 лет'
})

//создаем кота
var cat = Cat();
//проверяем как зовут
cat.sayName(); //приватное имя
//меняем приватное имя к которому имеют доступ только методы, по этому через метод
cat.setName('Даша');
//проверяем как его теперь зовут
cat.sayName(); //Даша

//создаем публичное свойство name
cat.name = "Афанасий"
//проверяем что методами используется по прежнему приватное имя
cat.sayName(); //Даша

ура, классы работают!
Теперь надо создать класс классов)!!!

Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 22:25.
Ответить с цитированием