функциональный объект со свойствами publi c stati c - PullRequest
0 голосов
/ 27 января 2020

Итак, я знаю, что могу добавить свойства publi c к функциям напрямую, как это.

const print = function (string) {
    console.log(string);
};
print.uppercase = function (string) {
    print(string.toUpperCase());
};

print("apple");            //  apple
print.uppercase("apple");  //  APPLE

Но я всегда следую этому шаблону, когда создаю объекты.

const object = function () {
    let field;
    const getField = function () {
        return field;
    };
    const setField = function (_field) {
        field = _field;
    };
    return Object.freeze({
            getField,
            setField
        });
};

можно сделать объекты функций со свойствами publi c, придерживаясь этого шаблона? Без использования this?

const factory = function () {
    const generic = function () {};
    const specific = function () {};

    return Object.freeze({
        // DO SOMETHING HERE SO THAT
        });
};

// factory() invokes the generic function, and
// factory.specific() invokes the specific function

1 Ответ

0 голосов
/ 27 января 2020

Я думаю, что вы ищете

generic.specific = specific;
Object.freeze(generic);
return generic;

или для краткости,

return Object.freeze(Object.assign(generic, {
  specific,
}));
...