Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2012, 20:10
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Mахmахmахimus,
нет на тебя Валеры ...
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2012, 20:14
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

self - все свойства сущности, сначала ищутся приватные потом публичные
private - сюда добавляются приватные свойства
public - сюда добавляются публичные свойства

Есть идеи как убрать вот эти страшные некрасивые куски кода и не писать их каждый раз?

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

Все таки я сделал это)) осталось только как то подправить код) и сделать чтобы было красиво и не тупило.
Может придумать класс классов)?

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

У меня вопрос, публичные методы могут иметь доступ приватным свойствам сущности?
Так же у меня вопрос, есть наверное какие-то либы с классами я как полагаю меня посетила мысль что я пишу велосипед)?

Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 22:27.
Ответить с цитированием
  #6 (permalink)  
Старый 11.02.2012, 22:30
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от Mахmахmахimus Посмотреть сообщение
У меня вопрос, публичные методы могут иметь доступ приватным свойствам сущности?
Так же у меня вопрос, есть наверное какие-то либы с классами я как полагаю меня посетила мысль что я пишу велосипед)?
забей на классы болт, сходи пивка попей)
Ответить с цитированием
  #7 (permalink)  
Старый 11.02.2012, 22:34
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от Shaci
забей на классы болт, сходи пивка попей)
А фраза то крылатая)
Ответить с цитированием
  #8 (permalink)  
Старый 11.02.2012, 22:53
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Mахmахmахimus
У меня вопрос, публичные методы могут иметь доступ приватным свойствам сущности?
Да. А вообще возьми да попробуй!
Код:
#include <iostream>

class MyClass
{
	public:
		void set(int x)
			{
				this->x = x;
			}
		void show()
			{
				std::cout << this->x << std::endl;
			}
	private:
		int x;
};

int main()
{

	MyClass obj;
	obj.set(5);
	obj.show();

	return 0;

}
http://codepad.org/Qd3Ezpdx
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2012, 23:07
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от Octane
Да. А вообще возьми да попробуй!
хах) неет, я спрашиваю как мне делать нужно чтобы имели или чтобы нет)
А мне вот кажется что не должны, иначе теряется смысл приватности.

То есть если я в уже созданного кота добавлю какой то метод через точку, то с какого хрена он вообще будет иметь доступ к его приватным свойствам???

вот если внутри класса опишу публичные методы, то да, они будут иметь доступ)

Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 23:16.
Ответить с цитированием
  #10 (permalink)  
Старый 11.02.2012, 23:31
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Не знаю, посмотри, как это работает, например, в ActionScript
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Javascript - классы, они есть или их нету в Javascript? Golovastik Javascript под браузер 39 15.02.2013 10:38
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
javascript вставки в vrml сцены. Передать событие из броузера Proletariy Javascript под браузер 0 10.05.2011 12:26
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34