【TS笔记】构造函数

1.constructor 被称为构造函数
2.构造函数会在对象创建时调用

class Cat {
    name: string;
    age: number;
    constructor(name: string, age: number){
        // 在实例方法中,this就表示当前实例
        // 在构造函数中当前对象就时当前新建那个对象
        // 可以通过this向新建的对象中添加属性
        this.name = name;
        this.age = age;
    }

    bark(){
        console.log(this.name)
    }
}

const cat = new Cat('汤姆', 18);
const cat2 = new Cat('杰瑞', 25);


console.log(cat);  // Cat {name: '汤姆', age: 18}
console.log(cat2); // Cat {name: '杰瑞', age: 25}

cat.bark(); // '汤姆'
cat2.bark(); // '杰瑞'
### TypeScript 中使用 ES5 风格的构造函数TypeScript 中,虽然推荐使用 `class` 关键字来定义类和构造函数,但在某些情况下可能需要兼容 ES5 的语法结构。以下是基于 ES5 风格构建构造函数的方式。 #### 创建构造函数 可以通过普通的 JavaScript 函数模拟类的行为,并利用原型链实现继承和其他功能。下面是一个简单的例子: ```javascript function User(name, age) { this.name = name; // 属性绑定到实例上 this.age = age; } // 添加方法到原型链上 User.prototype.greet = function () { console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`); }; ``` 上述代码展示了如何通过普通函数创建一个具有属性和方法的对象[^1]。这里的关键在于将方法附加到函数的 `prototype` 上,从而让所有该类型的实例共享这些方法。 #### 使用构造函数创建实例 一旦定义好构造函数及其原型方法,就可以像这样创建新实例并调用其方法: ```javascript var user = new User('Alice', 25); user.greet(); // 输出: Hello, my name is Alice and I am 25 years old. ``` 此部分说明了如何借助 `new` 操作符实例化对象以及访问成员变量与行为[^3]。 #### 扩展:继承机制 如果希望进一步扩展至支持继承,则可以采用如下方式完成父子关系建模: ```javascript function Admin(username, password) { User.call(this); // 调用超类构造器 this.username = username; this.password = password; } Admin.prototype = Object.create(User.prototype); // 设置原型链 Admin.prototype.constructor = Admin; let adminInstance = new Admin('admin_user', 'secure_password'); console.log(adminInstance instanceof Admin); // true console.log(adminInstance instanceof User); // true ``` 在此片段里提到的技术要点包括但不限于显式调用基类初始化逻辑 (`call`) 和调整子类的内部链接以便正确反映它们之间的关联性[^2]。 --- ### 总结 以上就是关于怎样运用传统的 ECMAScript 版本下的技术手段,在保持向后兼容的同时开发现代应用的一些见解。尽管如此,还是鼓励尽可能多地采纳最新标准所提供的特性以简化编码流程并增强可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值