【问题标题】:function object with public static properties具有公共静态属性的函数对象
【发布时间】:2020-01-27 19:41:06
【问题描述】:

所以我知道我可以像这样直接向函数添加公共属性。

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
        });
};

是否可以在坚持这种模式的同时制作具有公共属性的函数对象?不使用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

【问题讨论】:

    标签: javascript function object static-methods


    【解决方案1】:

    我想你正在寻找

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

    或简称,

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

    【讨论】:

    • 是的,我想。我也开始想,也许我应该把它做成一个模块,然后默认导出带有特定函数的通用函数。 javascript const generic = function () {}; const specific = function () {}; export default Object.freeze( Object.assign(generic, specific) ); 你怎么看?我知道我现在只是在征求您的个人意见,但我仍然很好奇您是否会建议这样做
    • 如果你想写一个 es6 模块,你应该只使用命名导出。更易于使用和理解,并且命名空间对象也是不可变的(尽管不可调用)。
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 2019-10-02
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多