Javascript.RU

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

Кстати может ты знаешь, допустим ты описал класс, потом создал им кота, потом добавляешь в класс новые протект методы, начнет ли их иметь уже созданный кот?
Ответить с цитированием
  #12 (permalink)  
Старый 12.02.2012, 00:00
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Не знаю ActionScript, в C++ классы статичны, ничего "потом" добавить не получится
Ответить с цитированием
  #13 (permalink)  
Старый 12.02.2012, 00:07
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от Octane
в C++ классы статичны, ничего "потом" добавить не получится
Шикарно)! значит у нас получатся протоклассы)!

попробую даже сделать без __proto__

Последний раз редактировалось Mахmахmахimus, 12.02.2012 в 00:23.
Ответить с цитированием
  #14 (permalink)  
Старый 12.02.2012, 00:33
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Где наследование? Где статичные объекты?
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #15 (permalink)  
Старый 12.02.2012, 00:34
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Ну и, соответственно, protected.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #16 (permalink)  
Старый 12.02.2012, 00:36
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от FINoM
Где наследование? Где статичные объекты?

что такое статичные обьекты?

п.с. вопрос, вот так описывать класс удобно будет?

var Cat = Class(function Cat() {
	this.private({
	    a : 20,
	    spead : 20
	})
	this.protected({

	})
	this.public({

	})
	this.static({

	})
});


private это то что будут иметь каждое созданное существо персонально для себя при том не видное снаружи

protected пока сам не понял до конца что это

public это аналог слова this в обычных конструкторах, у каждого существа будут личные публичные свойства.

static это как прототип, существ, все static свойства будут доступны всем существам и будут общими на всех, если добавить в прототип новое свойство, то оно автоматически появится у всех существ.

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

Последний раз редактировалось Mахmахmахimus, 12.02.2012 в 00:53.
Ответить с цитированием
  #17 (permalink)  
Старый 12.02.2012, 00:41
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Mахmахmахimus
что такое статичные обьекты?
Для всех экземпляров класса этот объект один, а не разный, как у паблика. То есть, ты поменял статичный объект в одном экземпляре класса, а он фигак, и в другом поменялся.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #18 (permalink)  
Старый 12.02.2012, 00:46
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

это как prototype по сути? Общие на всех свойства.

Последний раз редактировалось Mахmахmахimus, 12.02.2012 в 00:51.
Ответить с цитированием
  #19 (permalink)  
Старый 12.02.2012, 01:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Octane
в C++ классы статичны, ничего "потом" добавить не получится
Теоретически можно создать фабрику объектов через шаблоны в связке со smart pointer's. В этом случае можно получить новый объект в рантайме, а само назначение имени объекта будет иметь вид new Class('Foo')

Сообщение от Mахmахmахimus
static это как прототип
Не совсем, это свойство доступное в пределах класса, т.е. к нему можно обращаться как глобальному объекту, но за пределами класса оно не доступно.

Сообщение от http://msdn.microsoft.com/ru-ru/library/f4ewhdb8.aspx
Модификатор static указывает, что член класса принадлежит самому классу, а не его экземпляру. Даже если в отдельном приложении создается множество экземпляров класса, в нем существует только одна копия члена с модификатором static. При доступе к члену с модификатором static следует ссылаться на класс, на не на его экземпляр. Однако в рамках объявления члена класса к членам static можно обращаться с помощью объекта this.

Модификатором static можно помечать члены классов. Классы, интерфейсы и члены интерфейсов не могут иметь модификатора static.
Сообщение от Mахmахmахimus
Кстати может ты знаешь, допустим ты описал класс, потом создал им кота, потом добавляешь в класс новые протект методы, начнет ли их иметь уже созданный кот?
Ну и нафига это? Мне кажется ты путаешь с полиморфизмом:

#include <iostream>
#include <string>

using namespace std;
 
class A {};
class B {};

template <typename T> class Foo {};

template <> class Foo <A>
{
	public:
		void get() {
			cout << "Class A" << endl;
		}
};

template <> class Foo <B>
{
	public:
		void get() {
			cout << "Class B" << endl;
		}
};


int main() {
	Foo<A> a;
	Foo<B> b;

	a.get(); //Class A
	b.get(); //Class B

	return 0;
}


http://codepad.org/cgzfHj9X

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

//создание создавателя классов
(function(name) {
	init = {}
	init.class = {}

	init.private = function() {

	}
	init.protected = function() {

	}
	init.public = function() {

	}
	init.static = function() {

	}

	window[name] = function Class(class) {
		init.class = {} //очищаем кастрюлю от предыдущего "сваренного" класса
		class.call(init)
		return init.class
	}
})('Class')

//пример создания класса
var Cat = Class(function Cat() {
	this.private({
	    a : 20,
	    spead : 20
	})
	this.protected({

	})
	this.public({

	})
	this.static({

	})
});


вот каркас того что я начал делать, по сути функция Class принимает функцию описывающую класс, каким образом? вызывая определенные методы относительно this и суя с них обьекты.

так вот фунция Class принимает эту функцию и вызывает относительно обьекта init который хранится в её замыкании, методы в этом init что-то делают с полученнынми обьектами, наполняя свойство init.class создавая там функцию фабрику класса.

потом функция Class просто возвращает полученное там init.class значение))
правда init.class придется очищать перед каждый созданием класса потому что в нем будет хранится ссылка на предыдущий созданный класс, но это мелочи)) это как кастрюлю после варки помыть.

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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