繁体   English   中英

使用spread运算符将参数分配给ES5构造函数中的新对象?

[英]Assign parameters to new object in ES5 constructor using spread operator?

构造函数正在接受具有多个属性的options对象。 如何在不指定每个对象的情况下将它们分配给新创建的对象?

这是我失败的尝试

function Client(options) {
    const defaultOptions = { 
        host: '127.0.0.1',
        port: 1905,
        loggerFn: console.log,
        maxTime: 60000, 
        startFromTransactionId: 1 
    };
    this = { ...defaultOptions, ...userOptions, ...this }
}

ReferenceError:赋值中的左侧无效

我认为这有效,但我希望使用扩展运算符有一个更简单的解决方案

function Client(options) {
    const defaultOptions = { 
        host: '127.0.0.1',
        port: 1905,
        loggerFn: console.log,
        maxTime: 60000, 
        startFromTransactionId: 1 
    };

    for (prop in defaultOptions) {
        if (defaultOptions.hasOwnProperty(prop)) {
            this[prop] = options[prop] ? options[prop] : defaultOptions[prop];
        }
    }
}

使用Object.assign可以做到这一点:

function Client(userOptions) {
    const defaultOptions = { 
        host: '127.0.0.1',
        port: 1905,
        loggerFn: console.log,
        maxTime: 60000, 
        startFromTransactionId: 1 
    };
    Object.assign(this, { ...defaultOptions, ...userOptions });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM