javascript - 如何在基于函数调用的构造函数中设置顶级属性方法?
问题描述
我在一个类中有一个构造函数,它根据创建函数时传递的参数以及基于这些参数对另一个函数的调用来设置属性,但我遇到了一个问题。我已经解决了一个问题,但必须有一种更优雅的方式来写这个(不是双关语)。
这是我的构造函数:
constructor(name,model,version){
// create optional parameters to set basic values
this.name = name;
this.model = model;
this.version = version;
if(model === undefined || version === undefined){
this.make = "";
this.model = "";
this.version = "";
this.prop3 = 0
this.prop4 = 0;
this.prop5 = 0;
}
else{
this = getVersionAttrs(model,version); }
此代码不起作用,如果我替换this
为this.what
then 代码函数,但将所有属性设置为 OBJECT.what 的属性,而不是直接的 OBJECT。
我已将 else 语句替换为以下有效的语句:
else{
temp = getVersionAttrs(model,version);
for(var x in temp){ this[x] = temp[x]; }
}
有谁知道如何将我从函数返回的这个对象分配给getVersionAttrs()
正在创建的对象?返回对象的 Aka 属性应该成为正在创建的对象的属性。
在此先感谢,我一直在为这个问题挠头。
解决方案
不要尝试重新分配this
. 如果getVersionAttrs
返回具有要添加到的属性的对象this
,则应Object.assign
改用:
else {
Object.assign(this, getVersionAttrs(model, version));
}
class MyClass {
constructor() {
Object.assign(this, { foo: 'foo' });
}
}
console.log(new MyClass());
推荐阅读
- excel - 匹配、索引和特定列表
- anypoint-studio - 找不到 mule --> 在 anypoint studio 7 中管理 API
- jquery - 使用 Jquery 通过切换按钮切换多个音频
- python - 熊猫:根据其他值更改数据框中的值
- excel - Excel(版本 1902)宏 - 用于从网站获取数据的查询表运行速度非常慢
- javascript - 如何将值转换为十六进制以在javascript中的数组中发送
- python-3.x - 有没有办法使用 python 使用 googleapiclient 创建带有 pubsub 通知的预定查询?
- c# - 根据某些条件生成url
- python-sphinx - 在没有自定义警告的情况下在 sphinx 中导出 html
- python - 如何获取和处理另一个类中的对象列表?