[英]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.