• TS中Class类构造函数和this的使用


    一、构造函数

    constructor是构造函数,构造函数会在对象被实例化时调用

    constructor () {  // 构造函数体.. }

     如下代码中我们实例化了三个对象,每一次都会调用一次constructor函数,输出“构造函数被调用了”

    1. class Dog{
    2. constructor() {
    3. console.log("构造函数被调用了");
    4. }
    5. }
    6. const dog1 = new Dog(); // 打印:构造函数被调用了
    7. const dog2 = new Dog(); // 打印:构造函数被调用了
    8. const dog3 = new Dog(); // 打印:构造函数被调用了

    我们也可以在实例化对象的时候传入参数,例如我们这里传入姓名和年龄,在constructor函数中接收参数

    1. class Dog{
    2. constructor(name:string, age:number) {
    3. console.log(name, age);
    4. }
    5. }
    6. const dog1 = new Dog("大黄", 3); // 大黄 3
    7. const dog2 = new Dog("旺财", 4); // 旺财 4
    8. const dog3 = new Dog("小黑", 4); // 小黑 4

    二、类中的this 

    我们传入参数过后过后并没有赋值给我们的对象的属性,所以每个对象依旧是{ }

    this表示的是当前的实例

    在构造函数中,当前对象就是当前创建的那个对象,我们可以使用this向当前的对象中添加属性

    1. class Dog{
    2. name: string;
    3. age: number;
    4. constructor(name:string, age:number) {
    5. this.name = name;
    6. this.age = age;
    7. }
    8. }
    9. const dog1 = new Dog("大黄", 3); // {name:"大黄", age:3}
    10. const dog2 = new Dog("旺财", 4); // {name:"旺财", age:4}
    11. const dog3 = new Dog("小黑", 4); // {name:"小黑", age:4}

    三、方法中的this

    方法中的this指向的是调用方法的对象

    1. class Dog {
    2. name: string;
    3. age: number;
    4. constructor(name: string, age: number) {
    5. this.name = name;
    6. this.age = age;
    7. }
    8. bark() {
    9. console.log(this.name + "汪汪汪");
    10. }
    11. }
    12. const dog1 = new Dog("大黄", 3); // {name:"大黄", age:3}
    13. const dog2 = new Dog("旺财", 4); // {name:"旺财", age:4}
    14. const dog3 = new Dog("小黑", 4); // {name:"小黑", age:4}
    15. dog1.bark(); // 打印:大黄汪汪汪
    16. dog2.bark(); // 打印:旺财汪汪汪
    17. dog3.bark(); // 打印:小黑汪汪汪
  • 相关阅读:
    【算法】反悔贪心
    【第29例】IPD体系进阶:PL-TMT 产品线技术管理团队
    Vault-敏感信息保护的一种大胆尝试
    Prometheus TSDB存储原理
    dnmp运行时404报错
    【图神经网络论文整理】(二)—— HOW ATTENTIVE ARE GRAPH ATTENTION NETWORKS?:GATv2
    【数学建模】matlab向量(数组)
    k8s——5、service
    Java基础学习:深入解析Java中的位运算符
    vue3项目,vite+vue3+ts+pinia(8)-开发和生产模式配置+跨域
  • 原文地址:https://blog.csdn.net/XunLin233/article/details/133343945