关于class

关于class

ES6 通过class 关键字,可以定义类。新的class写法让对象原型写法更加清晰,更像面向对象编程

  class Foo {
    #prop = 10
    static myProp = 42
    _count = 0
    constructor(x, y) {
      this.x = x
      this.y = y
      this.readProp()
    }

    readProp() {
      console.log(Foo.myProp)
      console.log(this.x, this.y, this._count)
    }

    setProp() {
      return `${this.x}--${this.y}--${Foo.myProp}--${this.#prop}`
    }

    static fooFn() {
      return this.x + '-' + this.y + '-' + this.myProp
    }
  }

  const boo = new Foo(2, 3) // 42 2 3 0
  console.log(boo.setProp()) // 2--3--42--10
  console.log(Foo.fooFn()) // undefind-undefind-42
  console.log(boo.#prop) // Private field '#prop' must be declared in an enclosing class

类FOO 相当于实例boo 的原型,所有在类中定义的方法,都会被实例继承。
如果在一个方法fooFn() 或者属性myProp 前加上关键字static,就表示该方法不会被
实例继承,而是直接通过类来调用 Foo.myProp Foo.fooFn() 这就称为静态方法和属性
注意!! 如果静态方法包含this 关键字,这个this 指的是类Foo 而不是实例boo
实例属性还可以定义在类的最顶层 或者constructor 中

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • class的基本用法 概述 JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子: ...
    呼呼哥阅读 4,130评论 3 11
  • 类是对象的模板 类中包含 属性 和 方法属性和方法都是类的组成部分,属性是变量,方法是函数方法中的代码可以利用se...
    果啤阅读 1,065评论 0 3
  • 在学习了C#之后,回头再看JavaScript时,第一时间就想到关于Class和伪类,当初在看《JavaScrip...
    程序员王大可阅读 1,010评论 0 0
  • 继承6种套餐 参照红皮书,JS继承一共6种 1.原型链继承 核心思想:子类的原型指向父类的一个实例 Son.pro...
    灯不梨喵阅读 3,178评论 1 2
  • 简介 类的由来 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 上面这种写法...
    IT杨阅读 823评论 0 2