Es6提供了新的构造函数写法,引入了Class这个关键字来声明一个构造函数
- old type
function Person(x,y){
this.x = x;
this.y = y;
}
Person.prototype.init = function(){}
//实例
new Person(1,2)
- now
class Person(){
constructor(x,y){
this.x = x;
this.y = y;
}
init(){}
}
//实例
new Person(1,2)
注意方法间不要加“,”
- 私有方法
私有方法,顾名思义,只在对象内部调用,是常用的需求
class List(){
_get(){
}
init(){}
}
//_get方法我用"_"做标示,证明他只在内部使用,是私有方法
- 继承
子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。
class Person(){
constructor(x,y){
}
}
class students extends Person(){
constructor(x,y,z){
super(x,y);
this.z = z;
}
}
- set get
在Class内部可以使用get和set关键字,对某个属性设置存值函数和取值函数。
看到这里,其实是可以实现一个很简单的双向绑定
class bind(){
constructor(ele){
this.ele = document.getElementBy(ele)
}
get html() {
return this.element.innerHTML;
}
set html(value)
{
this.element.innerHTML = value;
}
}
- 静态方法
用static
修饰的方法,不能被实例继承,直接在类上调用
class Person(){
static age(){ return 'hh'}
}
Person.age() ==> hh