Действительно ли возможно сделать функтор в JavaScript?

from distutils.sysconfig import get_python_lib
print get_python_lib()
14
задан the_drow 18 November 2016 в 19:14
поделиться

2 ответа

Я считаю, что это то, что вам нужно:

var foo = (function () {
    var state = 0;

    return function () {
        return state++;
    };
})();

Или, следуя примеру из Википедии :

var makeAccumulator = function (n) {
    return function (x) {
        n += x;
        return n;
    };
};

var acc = makeAccumulator(2);

alert(acc(2)); // 4
alert(acc(3)); // 7

JavaScript - один из тех языков, которые, IMHO, имеют отличную поддержку для функций граждан первого класса.

28
ответ дан 1 December 2019 в 08:17
поделиться

Поскольку функции Javascript являются объектами первого класса, это можно сделать следующим образом:

var state = 0;
var myFunctor = function() { alert('I functored: ' + state++);};

Переменная состояния будет доступна для myFunctor ] в своем локальном замыкании. (Глобальный в этом примере). В других ответах на этот вопрос есть более сложные примеры.

Однако нет эквивалента просто «реализации оператора ()» для некоторого существующего объекта.

4
ответ дан 1 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: