ES6中的Class语法糖

本文介绍了ES6中的Class语法,强调其作为构造函数的替代,提供更清晰的面向对象编程体验。Class允许定义constructor、实例属性和方法、静态方法,并详细解释了它们的工作原理。例如,`constructor`用于初始化实例,静态方法可以通过类直接调用,不依赖实例。此外,Class中不存在变量提升,增强了代码的可读性和安全性。
摘要由CSDN通过智能技术生成

什么是class

class就是类,和ES5中的构造函数十分相似,绝大部分功能都是一致的,但是class的写法,能让对象原型的功能更加清晰,更加符合面向对象语言的特点。
它是构造函数的另一种写法

class Person {

}
typeof Person // "function"
Person.prototype.constructor === Person // true

使用

通过new来生产一个实例

class Person {

}
let json = new Person()

constructor

每个类都必须有一个constructor,如果没有显示声明,js 引擎会自动给它添加一个空的构造函数:

class Person {

}
// 等同于
class Person {
  constructor () {

  }
}

属性和方法

定义于 constructor 内的属性和方法,即定义在 this 上,属于实例属性和方法,否则属于原型属性和方法。

class Person {
  constructor (name) {
    this.name = name
  }

  say () {
    console.log('hello')
  }
}

let jon = new Person()

jon.hasOwnProperty('name') // true
jon.hasOwnProperty('say') // false

提升

class 不存在变量提升。

静态方法

不需要通过实例对象,可以直接通过类来调用的方法,其中的 this 指向类本身

class Person {
  static doSay () {
    this.say()
  }
  static say () {
    console.log('hello')
  }
}
Person.doSay() // hello

静态方法可以被子类继承

参考:《ECMAScript 6 入门》Class 的基本语法 by 阮一峰
掘金-JS 总结之 class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值