-
new echarts.graphic.LinearGradient(a,b,c,d)
Class
231
-
定义类
//类的声明 class Person {} //类的表达式 var Animal = class {}
类的声明会有自己的原型对象与constructor,当使用
typeof
来对class使用时会返回function -
class构造函数
class Person{ //class的构造方法,一个class只有一个构造方法 constructor(name,age){ this.name = name, this.age = age } }
- 每个类都剋有一个自己的构造函数(方法),这个方法的名称是固定的
constructor
- 当我们通过
new
操作符,此操作一个类的时候会调用这个类的构造函数constructor
- 每个类只能够一个构造函数,如果包含多个构造函数,那么就会抛出异常
当我们时候用new时,会执行以下操作
- 在内存中创建一个新的对象(空对象);
- 这个对象内部的
[[prototype]]
即__proto__
会被赋值为该类的prototype
- 构造函数内部的
this
,会指向创建出来的新对象; - 执行构造函数的内部代码(函数体代码);
- 如果构造函数没有返回空对象,则返回创建出来的新对象
-
为class中定义方法
class Person{ eating(){console.log('eating')} running(){console.log('running')} }
在class中定义方法时,本质上为放到了原型对象上
-
class的静态方法
class Person{ static.createPerson{ return new Person('xi',20) } } //使用 var p1 = Person.createPerson();
-
class的继承
class Person{ constructor(name,age){ this.name = name, this.age = age } eating(){console.log('eating')} } class Student extends Person{ constructor(name,age,sno){ super(name,age) } studing(){console.log('studing')} }
在子(派生)类的构造函数中使用this或(return)返回默认对象之前,必须先通过
super
调用父类的构造函数-
super
的使用位置//直接调用 //调用父类的构造函数 super([arguments]); //调用父类的方法 super.functionOnParent([arguments]);
方法的重写,如果我们在子类中对方法进行重写,则会调用我们自己的方法,而非父类的
class Person { constructor(name,age){this.name=name,this.age=age} eating(){console.log('eating')} } class Student extends Person(){ constructor(name,age,sno){ super(name,age) this.sno = sno } //子类的对父类方法的重写 eating(){ console.log(this.name+'eating') } }
class Person { constructor(name,age){this.name=name,this.age=age} eating(){console.log('eating')} proMethods(){ console.log('1') console.log('2') console.log('3') } } class Student extends Person(){ constructor(name,age,sno){ super(name,age) this.sno = sno } eating(){ console.log(this.name+'eating') } //想要使用父类的方法,并添加自己的放方法 proMethods(){ super.proMethods() //此时将先调用父类的该方法,之后在调用自己的该方法 console.log('4') console.log('5') console.log('6') } }
父类的静态方法子类也会继承,这样的话我们也可进行重写
-