Кстати может ты знаешь, допустим ты описал класс, потом создал им кота, потом добавляешь в класс новые протект методы, начнет ли их иметь уже созданный кот?
|
Не знаю ActionScript, в C++ классы статичны, ничего "потом" добавить не получится
|
Цитата:
попробую даже сделать без __proto__ |
Где наследование? Где статичные объекты?
|
Ну и, соответственно, protected.
|
Цитата:
что такое статичные обьекты? п.с. вопрос, вот так описывать класс удобно будет? var Cat = Class(function Cat() { this.private({ a : 20, spead : 20 }) this.protected({ }) this.public({ }) this.static({ }) }); private это то что будут иметь каждое созданное существо персонально для себя при том не видное снаружи protected пока сам не понял до конца что это public это аналог слова this в обычных конструкторах, у каждого существа будут личные публичные свойства. static это как прототип, существ, все static свойства будут доступны всем существам и будут общими на всех, если добавить в прототип новое свойство, то оно автоматически появится у всех существ. вопрос, какие еще штуки добавить? еще вопрос, публичные методы должны иметь доступ к приватным свойствам? |
Цитата:
|
это как prototype по сути? Общие на всех свойства.
|
Цитата:
Цитата:
Цитата:
Цитата:
#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 |
//создание создавателя классов (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 придется очищать перед каждый созданием класса потому что в нем будет хранится ссылка на предыдущий созданный класс, но это мелочи)) это как кастрюлю после варки помыть. |
Часовой пояс GMT +3, время: 20:27. |