Spe*_*und 3 javascript ecmascript-6
抓我的头试图让这个最佳.假设我有一个函数将对象作为参数并像这样破坏它:
myfunc = (options = {a:true, b:true, c:true}) => {...}
Run Code Online (Sandbox Code Playgroud)
默认情况下,ab和c为true.但是说我打电话,myfunc并希望b是假的:
myfunc({b:false})
Run Code Online (Sandbox Code Playgroud)
现在好了options.b === false,但a和c的值都消失了.有没有我可以完成这个而不必传递默认值的副本?
我尝试了一些奇怪的东西
myfunc = (options = Object.assign({a:true, b:true, c:true}, options)) =>{}
Run Code Online (Sandbox Code Playgroud)
但那当然不对.
您可以使用具有默认值的所需属性的默认对象,而不使用默认值option.然后使用短手属性创建一个新的.
对于其他对象,您可以使用较新的或babeljs来保留对象的rest属性.
var myfunc = ({ a = true, b = true, c = true, ...rest } = {}) => {
const option = { a, b, c, ...rest };
console.log(option);
};
myfunc(); // take {} as default and the default values inside of the object
myfunc({ b: false }); // take b and default values
myfunc({ foo: 42 }); // take foo and all default valuesRun Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
381 次 |
| 最近记录: |