JS ES6:将参数作为具有解构的对象获取
JS ES6: Get parameters as an object with destructuring
是否可以使用解构将函数的参数作为对象获取(以便对其进行迭代)?
function({a=1, b=2, c=3}={}) {
// how to get {a:1, b:2, c:3}?
}
我的目标是将每个参数绑定到 class 构造函数中的 this
。
不解构也是可能的:
class Test {
constructor(args) {
Object.assign(this, args);
}
}
但我不知道如何简化:
class Test {
constructor({a=1, b=2, c=3}={}) {
this.a = a;
this.b = b;
this.c = c;
}
}
let test = new Test();
// test.a = 1
// test.b = 2 etc.
您可以使用 shorthand 对象创建形式来做到这一点:
class Test {
constructor({a=1, b=2, c=3}={}) {
Object.assign(this, {a, b, c});
}
}
示例:
class Test {
constructor({a=1, b=2, c=3}={}) {
Object.assign(this, {a, b, c});
}
}
const t1 = new Test();
console.log("t1:", t1.a, t1.b, t1.c);
const t2 = new Test({b: 42});
console.log("t2:", t2.a, t2.b, t2.c);
或者,不使用解构,而是使用多个参数 Object.assign
:
class Test {
constructor(options = {}) {
Object.assign(this, Test.defaults, options);
}
}
Test.defaults = {a: 1, b: 2, c: 3};
// Usage:
const t1 = new Test();
console.log("t1:", t1.a, t1.b, t1.c);
const t2 = new Test({b: 42});
console.log("t2:", t2.a, t2.b, t2.c);
...如果您希望其中任何一个作为您可以通过名称引用的离散事物,您可以只使用 this.a
(以及 this.b
和 this.c
)来做它,或者你可以这样做:
let {a, b, c} = this;
...然后使用它们。 (请注意 将 分配给结果 a
、b
和 c
不会更新对象。)
是否可以使用解构将函数的参数作为对象获取(以便对其进行迭代)?
function({a=1, b=2, c=3}={}) {
// how to get {a:1, b:2, c:3}?
}
我的目标是将每个参数绑定到 class 构造函数中的 this
。
不解构也是可能的:
class Test {
constructor(args) {
Object.assign(this, args);
}
}
但我不知道如何简化:
class Test {
constructor({a=1, b=2, c=3}={}) {
this.a = a;
this.b = b;
this.c = c;
}
}
let test = new Test();
// test.a = 1
// test.b = 2 etc.
您可以使用 shorthand 对象创建形式来做到这一点:
class Test {
constructor({a=1, b=2, c=3}={}) {
Object.assign(this, {a, b, c});
}
}
示例:
class Test {
constructor({a=1, b=2, c=3}={}) {
Object.assign(this, {a, b, c});
}
}
const t1 = new Test();
console.log("t1:", t1.a, t1.b, t1.c);
const t2 = new Test({b: 42});
console.log("t2:", t2.a, t2.b, t2.c);
或者,不使用解构,而是使用多个参数 Object.assign
:
class Test {
constructor(options = {}) {
Object.assign(this, Test.defaults, options);
}
}
Test.defaults = {a: 1, b: 2, c: 3};
// Usage:
const t1 = new Test();
console.log("t1:", t1.a, t1.b, t1.c);
const t2 = new Test({b: 42});
console.log("t2:", t2.a, t2.b, t2.c);
...如果您希望其中任何一个作为您可以通过名称引用的离散事物,您可以只使用 this.a
(以及 this.b
和 this.c
)来做它,或者你可以这样做:
let {a, b, c} = this;
...然后使用它们。 (请注意 将 分配给结果 a
、b
和 c
不会更新对象。)