Конструктор JavaScript, экземпляры которого являются функциями
Я знаю, что это может быть странный вопрос, возможно, без практического применения, но возможно ли создать класс JavaScript, который конструирует экземпляры, которые ведут себя как функции? Вот что я имею в виду:
function Factory() {}
// this may not be necessary, but I'll include it for sake of clarification
Factory.prototype = Object.create(Function.prototype);
var method = new Factory();
method(); // Objective: should not throw TypeError
Для дальнейшего уточнения цели:
method
должен вызываться как функцияmethod
должен быть результатом вызова конструктора (например,var method = new Factory()
в этом случае)- Конструктор не может быть
Function
,
1 ответ
Решение
Если я правильно понимаю. Конструктор объекта должен вернуть свой метод. Тогда вы можете назвать это, как вы описываете.
function Factory() {
return this.method;
}
Factory.prototype.method = function() {
console.log('from method');
};
var method = new Factory();
method();