class是什么?
是怎么封装的呢?
使用js的闭包
来看ts代码
let arr: Array<number> = [1, 2, 3];class gromy {name(): void {console.log('my name is gromy', this.age)console.log('call outer', arr)}age: number = 20}let obj = new gromy();obj.name()
运行tsc 编译后生成js代码
var arr = [1, 2, 3];var gromy = /** @class */ (function () {function gromy() {this.age = 20;}gromy.prototype.name = function () {console.log('my name is gromy', this.age);console.log('call outer', arr);};return gromy;}());var obj = new gromy();obj.name();
执行js代码
my name is gromy 20call outer (3) [1, 2, 3]
通过闭包的形式,封装了gromy这个类
通过原型链,构造了gromy这个类的方法 name
在这个类中 this指向gromy,可以访问这个类的变量
Class就是用闭包写的一个构造器
欢迎各位大佬指正!
