@ange007
Программист, просто программист.

JavaScript: Как правильно реализовать возможность «замены/подмены» конструктора в классе при его создании и наследовании?

Добрый день.
Есть самописная библиотека для создания и наследования классов ( код на pastebin ) ( код ниже показывает создание класса из набора параметров/функций ).
var newClass = classConstructor; // Функция - конструктор	

// Проходим по списку функция и прописываем их в создаваемый класс
...


Пытаюсь реализовать что-то наподобии:
var newClass = function( )
	{
		var callArguments = ( arguments.length > 0 ? arguments : arguments.callee.caller.arguments );
		this[ '___con' ].apply( this, callArguments );
	};
	newClass.prototype.___con = classConstructor;

Это необходимо в связи с тем что все функции в prototype в последующем - проксируются ( заменяются на вызов aplly + вызов спец. функции ), и хочется реализовать это и для конструктора.
Но по какой-то причине ничего не выходит, а получается вечный цикл на моментах последующего наследования.
В чём может быть причина?
Или как сделать это по другому?
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
@alexeyproject
Если я правильно понял, то:
function Figure(name) {
    this._name = name;
}
Figure.prototype.getName = function () {
    return this._name;
};

// проксируем
function WrapFigure(name) {
    var obj = Object.create(Figure.prototype);
    Figure.apply(obj, arguments);

    // что-то делаем

    return obj;
}

// проверяем
var cir = new WrapFigure('Circle');
var name = cir.getName();
console.log(name);
// все работает!

А вообще
arguments.callee
крайне не рекомендуется, т.к. не работает в 'use strict'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы