Сообщение от Pavel_Volodko
|
А вот имея функцию-конструктор для создания объекта-прототипа всё делается элементарно.
|
Не намного элементарнее. Вы объединили несколько задач в одну. Цепочка наследования (делегирования) выстраивается с помошью объекта-прототипа, созданного "промежуточным" конструктором в стиле (паттерн by Lasse Reichstein Nielsen):
function inheritObject(object) {
function Dummy(){};
Dummy.prototype = object;
return new Dummy();
}
Одновременно вместо Dummy для "подклассов" используется заранее подготовленная и заложенная в функцию структура. То есть, получив правильно прилинкованный объект-прототип, вы вместо:
Person.prototype.x =//...
Person.prototype.y =//...
используете:
this.x = //...
this.y = //...
что, в принципе, почти то же самое кроме доступа к локальным переменным функции из методов. Отсюда 2 вывода - то ли вам важны локальные переменные ($className), то ли вам не нравится "обвешивать" объект-прототип руками или через for-in...