JavaScript中的类
作用
类是用于创建对象的模板
原理
类的数据类型就是函数,类本身就指向构造函数。
类:定义的方法都存在于prototype中
实例:通过__proto__进行访问原型
用法
- 声明(具名和匿名两种。函数声明和类声明之间的一个重要区别在于,函数声明会提升,类声明不会。)
- 原型方法(constructor() : 一个类只能一个,实例对象的时候会执行,如果没有定义,会自动生成)
- 静态方法(关键字为static, 通常用于为一个应用程序创建工具函数【例如:创建或克隆对象】。通过类直接调用,方法中不存在this)
- extends (继承)
- super (超类) :
- Mix-ins (混入)
原因:解决子类无法多重继承的问题
- # (私有) 只能在类内部调用
可以搭配 getter 和 setter ,暴露给外界使用
- 公有静态字段:
特点:一个类只存一份数据。可以用它存放缓存数据、固定结构数据或者其他你不想在所有实例都复制一份的数据。
- 实例字段:
顺序: 在本类构造函数之前添加。
父类实例字段----父类构造函数---子类实例字段---子类构造函数
- 静态代码块
语法:static { ....}
作用:块状作用域仅在引擎调用时初始化执行一次 ,决解以前初始化静态类属性需要设置一个静态变量初始化逻辑。
例子
// 超类
	class Polygon {
		#msg = 'hello world';
		constructor(width, height) {
			this.width = width;
			this.height = height;
			// 类名调用静态方法
			Polygon.staticMethod();
		}
		static baseStaticMethod() {
			return 'base static method output';
		}
		get msg() {
			return this.#msg;
		}
		set msg(value) {
			this.#msg = `hello ${value}`;
		}
		// 静态调静态,用this, 其他都是用类名
		static staticMethod () {
			return 'Static method has been called';
		}
		static anotherStaticMethod() {
			return this.staticMethod();
		}
	}
	
	// 子类 extends
	class Square extends Polygon {
		// 公有静态字段
		static staticField = super.baseStaticMethod();
		// 构造函数
		constructor(length) {
			// 关键字 super
			super(length, length);
		}
		get area() {
			return this.height * this.width;
		}
		set area(value) {
			this._area = value;
		}
	}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号