程序中的类:

  • 注意:

1.es6中class没有哦提升功能,在es5中,函数模拟可以,默认函数提升

2.this

矫正this:

1.fn.call(this指向谁,args1,args2…)

2.fn.apply(this指向,[args1,args2…])

3.fn.bind()

class中取值函数(getter),存执函数(setter)

静态方法:类身上的方法,如:

<script > class Person {
     constructor() {
     } showName() {
     return '这是showName方法'; } // 定义静态方法 static aaa() {
     return '这是静态方法'; } } let p1 = new Person(); console.log(p1.showName()); // 调用静态方法 console.log(Person.aaa()); </script>
</script>

父类

子类

继承:

之前使用继承(很累):

<script > // 父类 function Person(name) {
     this.name = name; } Person.prototype.showName = function () {
     return `名字是:${
      this.name}`; }; // 子类 function Student(name, skill) {
     Person.call(this, name); // 继承属性 this.skill = skill; } Student.prototype = new Person(); // 继承方法 // 调用 let stu1 = new Student("kirin", "逃学"); console.log(stu1.showName()); </script>

现在:

<script > class Person {
     constructor(name) {
     this.name = name; } showName() {
     console.log("父类的showName"); return `名字为: ${
      this.name}`; } } class Student extends Person {
     // 子类继承父类必须在其中写 super() // constructor:构造函数 /*constructor(args) { super(args); }*/ constructor(name, skill) {
     super(name); this.skill = skill; } // 如果子类中有覆盖了父类的方法,则子类方法中必须写super() showName() {
     super.showName(); // 父类的方法执行,后面子类的代码还会继续执行 console.log("子类里的showName"); } showSkill() {
     return `技能为${
      this.skill}`; } } let stu1 = new Student("kirin", "逃学"); // console.log(stu1.showName()); // console.log(stu1.showSkill()); stu1.showName(); </script>