class是什么?

class是类,在ts中,是封装,继承,多态中的封装

是怎么封装的呢?

使用js的闭包
来看ts代码

  1. let arr: Array<number> = [1, 2, 3];
  2. class gromy {
  3. name(): void {
  4. console.log('my name is gromy', this.age)
  5. console.log('call outer', arr)
  6. }
  7. age: number = 20
  8. }
  9. let obj = new gromy();
  10. obj.name()

运行tsc 编译后生成js代码

  1. var arr = [1, 2, 3];
  2. var gromy = /** @class */ (function () {
  3. function gromy() {
  4. this.age = 20;
  5. }
  6. gromy.prototype.name = function () {
  7. console.log('my name is gromy', this.age);
  8. console.log('call outer', arr);
  9. };
  10. return gromy;
  11. }());
  12. var obj = new gromy();
  13. obj.name();

执行js代码

  1. my name is gromy 20
  2. call outer (3) [1, 2, 3]

通过闭包的形式,封装了gromy这个类
通过原型链,构造了gromy这个类的方法 name
在这个类中 this指向gromy,可以访问这个类的变量

Class就是用闭包写的一个构造器

欢迎各位大佬指正!