Class 简单使用摘要

参考

class 基本语法

//class 实现
class Point {
  constructor (x,y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return (this.x,this.y)
  }
}

//z构造函数实现
function Points(x,y) {
  this.x = x;
  this.y = y;
}

Points.prototype.toString = function(){
  return this.x+this.b
}

constructor

  • 默认方法,未显示定义时会默认添加
  • 默认返回实例对象 this
  • 必须使用 new 调用
  • static 静态方法

    类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。
    静态方法可以被子类继承。

class Foo {
  static classMethod() {
    return 'hello';
  }
}

Foo.classMethod() // 'hello'

var foo = new Foo();
foo.classMethod()
// TypeError: foo.classMethod is not a function

继承 extends

在子类的构造函数中,只有调用super之后,才可以使用this关键字,否则会报错。这是因为子类实例的构建,是基于对父类实例加工,只有super方法才能返回父类实例。

class Point {
}

class ColorPoint extends Point {
}

class ColorPoint extends Point {
  constructor(x, y, color) {
    super(x, y); // 调用父类的constructor(x, y)
    this.color = color;
  }

  toString() {
    return this.color + ' ' + super.toString(); // 调用父类的toString()
  }
}

super

  • 函数 super()
    作为函数使用,代表父类的构造函数;
    子类的构造函数必须执行一次 super();
class A {
  constructor() {
    console.log(new.target.name);
  }
}
class B extends A {
  constructor() {
    super();
  }
}
new A() // A
new B() // B

super虽然代表了父类A的构造函数,但是返回的是子类B的实例,即super内部的this指的是B

  • 对象 super
    在普通方法中 指向父类的原型对象
    在静态方法中 指向 父类
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • class的基本用法 概述 JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子: ...
    呼呼哥阅读 4,131评论 3 11
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,849评论 0 10
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,786评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,709评论 0 11
  • 标题源于《星际穿越》,Cooper说“牛顿第三定律告诉我们,想要达到目的,我们总得留下点什么”。 入职半月,随便写...
    Edward101阅读 2,832评论 0 0