我有一个类,该类的构造函数需要三个参数。我代码中的一个函数有一个字典,其中的键是参数的确切名称,而值是它们的值。有没有一种方法可以使用此字典来调用构造函数,以使键自动匹配?还是将每个值手动放入构造函数参数的唯一解决方案?
class ItemDrop {
constructor(id,x,y){
this.id = id;
this.x = x;
this.y = y;
}
}
以及另一个文件
var params = {
"id" : "2837",
"x" : 50,
"y" : 100
}
var itemdrop = new ItemDrop(params) // how would i do this?
为了澄清,我不想运行
var itemdrop = new ItemDrop(params['id'],params['x'],params['y'])
除非没有更清洁的选择,否则我将对许多不同的类进行多次类似的操作。
答案 0 :(得分:4)
如果可以确保仅使用所需属性调用构造函数,则可以使用Object.assign
将参数中的所有属性分配给实例(this
):
class ItemDrop {
constructor(params) {
Object.assign(this, params);
}
}
const params = {
"id": "2837",
"x": 50,
"y": 100
}
const instance = new ItemDrop(params);
console.log(instance);
要将三个参数保留给构造函数,没有办法重复每个属性名称两次,并且必须对params
中的属性进行排序,以将它们正确地散布到构造函数中:
class ItemDrop {
constructor(id, x, y) {
Object.assign(this, { id, x, y });
}
}
const params = {
"id": "2837",
"x": 50,
"y": 100
}
const instance = new ItemDrop(...Object.values(params));
console.log(instance);
答案 1 :(得分:1)
您可以将对象作为参数提供给构造函数
constructor({id,x,y}){
this.id = id;
this.x = x;
this.y =y;
}