如何解决具有待定义属性的对象
我想知道是否有一种方法可以定义在创建对象实例之前未定义的类的属性。可以说我想要一个具有多个属性的对象,例如:名称,宽度,重量,颜色。但是另一些时候,我想使用同一个对象来实例化不同的属性:名称,长度,类型,材料。
class MultiProduct{
constructor(atttobedefined1=a1,atttobedefined2=a2,atttobedefined3=a3,atttobedefined4=a4){
this.atttobedefined1 = a1;
this.atttobedefined2 = a2;
this.atttobedefined3 = a3;
this.atttobedefined4 = a4;
}
}
var MP = new MultiProduct(name="tesla x",width="280cm",Weight="2000T",Color="Red");
最后,当要在屏幕上显示对象时,取决于属性,它会/可以像以下那样使用:
console.log(MP['width']); //in case this property 'width' exists
//output "280cm"
是否有任何方法可以得到这种方法,或者每当我要表示一个不同的属性/真实产品时,我都必须创建一个带有其setter和getter的新对象?我特别要求使用JavaScript,但我想知道(一般而言)是否可以通过编程实现。
请原谅使用不良的英语和无意义的代码作为示例。
解决方法
如果要在参数中传递键/值对,请使用一个对象。
new MultiProduct(
{ property: "name",value: "tesla x" },{ property: "width",value: "280cm" },etc
)
或
new MultiProduct(
{
name: "tesla x",width: "280cm",etc
}
)
如果要分配给名称在变量中的属性,请使用方括号表示法:
const atttobedefined1 = /* How you read from the args depends on the specific forfmat */
this[atttobedefined1] = /* etc */
拥有完全自由格式的属性会首先失去使用类的好处,因此您可能需要重新考虑这种方法。只需添加更多可选参数,可能会更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。