ES6语法——类

类的概念
  • 基本语法
  • 类的继承
  • 静态方法
  • 静态属性
    以上是核心特性
  • getter
  • setter
	//es5中的类(即构造函数)
{
	function Fn(name,age){
		this.name=name;
		this.age=age;
	}
	var fn = new Fn('Leo',20)//返回的是个对象
	//es5中的类的继承,通过原型链完成
}
	//基本定义和生成实例//通过class关键字生成一个类
	//下面是一个空的类,类需要有个构造函数
{
	class Parent{
	
	}
}
//类的定义和类的实例化	
{
	class Parent{
		constructor(name='hello'){//hello是name的默认参数
		//通过对象的实例传入一个参数
			this.name = name
		}
	}
	//new一个实例出来
	let v_parent = new Parent('v');
	console.log('构造函数',v_parent);//{name:'v'}
}
//类的继承
{
	class Parent{
		constructor(name='hello'){
			this.name = name
		}
	}
	//通过关键字extends实现继承
	class Child extends Parent{//定义一个空的类Child,继承于Parents类
	}
	console.log('继承',new Child())//{name:'hello'}
	//hello是父类的默认值,子类如何覆盖父类的默认值?
	//继承如何传递参数?在子类构造函数中使用一个方法,super()
}
//继承传递参数
{
	class Parent{
		constructor(name='hello'){
			this.name = name
		}
	}
	//通过关键字extends实现继承
	class Child extends Parent{
		constructor(name='child'){
	//super里面是参数列表,因为父级是一个参数,所以super里也是一个参数
	//如果super的参数是空,就使用父级的默认参数
			super(name);//super要放在constructor的第一行
			this.type = 'child';//子类定义自己的属性,须放在super之后,不然报错
		}
	}
	console.log('继承',new Child())//{name:'child',type:'child'}
}
//类中的getter、setter
{
	class Parent{
		constructor(name='hello'){
			this.name = name
		}
		//get后面是个属性而不是方法
		get longName(){
			return '999'+this.name
		}
		//set后面是个属性而不是方法
		set longName(value){
			//你给我这个属性赋值,我会赋值给当前的name属性
			this.name = value;
		}
	}
	let v = new Parent();
	console.log('getter',v.longName);//'999hello'
	v.longName = 'nihao';
	console.log('setter',v.longName);//'999nihao'
}
//类的静态方法
{
	//静态方法定义时,要用static关键字
	class Parent{
		constructor(name='hello'){
			this.name = name
		}
		//静态方法是通过类调用
		//而不是通过类的实例去调用
		static tell(){
			console.log('tell')
		}
	}
	Parent.tell()//tell
}
//类的静态属性
//static只是用来定义静态方法
//static不是用来定义静态属性
//静态属性暂时没有关键字
{
	class Parent{
		constructor(name='hello'){
			this.name = name
		}
	}
	//静态属性:在类上直接定义
	Parent.type='test';
	console.log('静态属性',Parent.type);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值