ES6的class用法总结

   ES6新增class关键字,class关键字也是原型对象的一个语法糖,让原型对象更加的清晰,

    我们先回顾一下原型对象,如下图,原型对象是不是包含一个constructor函数,这个函数的所引指向的是函数的构造方法,所以    我们先明确一下,所谓的类其实就是原型对象呢,对类的初始化是调用的构造方法constructor函数,故生成的是构造函数的实例对象

  • 用class定义一个新的类,语法:class  类名{类体},class类的特点:
  1. 定义的class类,他的数据类型是函数,类名指向的是其构造函数的索引,即生成的实例是构造函数的实例,
  2. 用new  类名()创建一个实例对象,该实例对象是由构造函数初始化的,所以他的属性是构造函数包含的属性,构造函数外面的都是继承属性了。
  3. class类体里面必须有一个构造函数,即constructor(){}函数,如果没有定义会自动生成一个的空的constructor函数
  4. class里面的函数是不需要用关键字function定义的,直接函数名就可以,并且函数之间不需要用逗号隔开,会报错的
  5. _proto_:指向构造方法的原型对象
  6. hasOwnProperty():判断一个对象中是否含有属性和方法,返回布尔类型值
class CustomHTMLElement {
  constructor(element) {
    this.element = element;
  }

  get html() {
    return this.element.innerHTML;
  }

  set html(value) {
    this.element.innerHTML = value;
  }
}

var descriptor = Object.getOwnPropertyDescriptor(
  CustomHTMLElement.prototype, "html"
);

"get" in descriptor  // true
"set" in descriptor  // true
  • 静态方法:在函数前面添加static关键字,声明改方法为静态方法,静态方法就是不用实例化就可以直接调用的方法,非静态方法是必须经过实例化才可以调用的方法。
  1. 静态方法是不可以被实例对象继承的,所以类创建的实例对象是不可以调用的,会报错
  2. 静态方法可以直接被类调用即类名.静态方法的s形式调用
  3. 静态方法中的this值得是类而不是实例
  4. 静态方法和费静态方法是可以重名显示的
class Foo {
  static bar() {
    this.baz();
  }
  static baz() {
    console.log('hello');
  }
  baz() {
    console.log('world');
  }
}

Foo.bar() // hello
  • 静态属性:在属性前面添加static关键字是不可以 将属性变为静态属性的,所谓的静态属性值得是,该属性是类的属性而不是实例化的属性,即不需要实例化的属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值