Конструктор 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();

http://jsfiddle.net/ydcoL3c2/

Другие вопросы по тегам