javascript - 如何使用 javascript 对象中的构造函数来仅使用 `this` 中的属性?

标签 javascript typescript

我想创建以下类的实例:

class Person {
    firstName;
    lastName;
    birthday;
    constructor(props: Person) {
        {firstName,lastName,birthday} = props
    }
}

var me = new Person({firstName: "donald", 
lastName: "trump",
 middleName: "john"})

我希望构造函数只选择要分配给“this”的类的属性,这样 me 将是 {firstName: "donald", lastName: "trump ", 生日:未定义

我的想法是:

class Person {
    firstName;
    lastName;
    birthday;
    constructor(props: Person) {
        this.{firstName,lastName,birthday} = props
    }
}

var me = new Person({firstName: "donald", lastName: "trump", middleName: "john"})

或类似的东西。

最佳答案

您可以分两行执行此操作:

const {firstName,lastName,birthday} = props;
Object.assign(this, {firstName,lastName,birthday});

现在,如果这只是关于三个 属性,只需执行:

this.firstName = props.firstName;
this.lastName = props.lastName;
this.birthday = props.birthday;

它更具可读性,而且速度稍快。值得额外排队。

您还可以更改构造函数签名,以便它解构所需的属性:

constructor({firstName: string, lastName: string, birthday: Date}) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.birthday = birthday;
}

关于javascript - 如何使用 javascript 对象中的构造函数来仅使用 `this` 中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55817480/

相关文章:

Angular 6 - 无法解析 AppComponent 的所有参数

angular - 如何从 API 响应接收类型为 csv 的文件

typescript - 如何从Nuxt 3服务器获取路由参数

angular - 如何在 Angular 2 中监听点击并按住?

javascript - 为什么变量在方法中未定义,但在 Typescript 的构造函数中却没有定义

javascript - ACL express.js 允许角色访问子路径

javascript - 如何使用 discord.js 在消息中提及用户?

javascript - 如何从 Astro 文件(服务器端)访问 url 查询参数?

javascript - 处理浮点错误的最佳方法是什么?

javascript - 单击多个链接时如何从 session 中获取先前的链接值