Показать сообщение отдельно
  #41 (permalink)  
Старый 25.07.2012, 15:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Очередное обновление.

Добавлена возможность множественного наследования, так же внесены изменения во входные параметры.

Так же добавлен параметр Class.defaultContext в который вы можете указать объект, куда по умолчанию будут складываться все созданные классы, у которых явно не указан контекст.

Объявлять классы как обычно можно:
Class("Foo", {
    // code
});
если нужны указать дополнительные параметры, это теперь можно сделать так:
Class("Foo", {
    // контекст в котором будет создан класс
    context: window,
    // строка/конструктор от которого будем наследоваться
    extends: "Bar",
    // строка/конструктор или список строк/конструкторов, из которых будут получены дополнительные свойства
    implements: [ "IBase", "IPersistent" ],
    // статические параметры
    static: {
        STATIC_PARAM: 1,
        STATIC_CONST: "lala"
    }
}, {
    // code
});

Пример:
<script type="text/javascript" src="https://github.com/devote/jsClasses/raw/master/core.class.min.js"></script>
<script type="text/javascript">

	Class("Foo", {
		foo: function(){
			alert( this.__class__.className );
		},
		"get name": function() {
			return "this Foo name";
		}
	});

	Class("Bar", {
		bar: function(){
			alert( this.__class__.className );
		},
		"get name": function() {
			return "this Bar name";
		}
	});

	Class("Tre", Foo, {
		trefoo: function(){
			alert( this.__class__.className );
		}
	});

	Class("Mix", {
	    extends: "Tre",
	    implements: "Bar"
	}, {
	});

	var a = new Mix();
	a.foo();
	a.bar();
	a.trefoo();
	alert( a.name );
</script>
или так:
<script type="text/javascript" src="https://github.com/devote/jsClasses/raw/master/core.class.min.js"></script>
<script type="text/javascript">

	Class("Foo", {
		foo: function(){
			alert( this.__class__.className );
		},
		"get name": function() {
			return "this Foo name";
		}
	});

	Class("Bar", {
		bar: function(){
			alert( this.__class__.className );
		},
		"get name": function() {
			return "this Bar name";
		}
	});

	Class("Tre extends Foo", {
		trefoo: function(){
			alert( this.__class__.className );
		}
	});

	Class("Mix extends Tre, Bar", {
	});

	var a = new Mix();
	a.foo();
	a.bar();
	a.trefoo();
	alert( a.name );

	// или
	Class("Mix2", "Tre, Bar", {
	});

	var a = new Mix2();
	a.foo();
	a.bar();
	a.trefoo();
	alert( a.name );
</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 27.01.2013 в 19:40. Причина: исправил примеры
Ответить с цитированием