es6 --- 类

本文详细介绍了ES6中的类特性,包括类声明、类表达式、构造函数、实例化、原型和类成员。类是ES6对构造函数的语法糖,可以包含构造函数、实例方法、静态方法等。类的实例化使用new操作符,类本身是特殊函数,具有prototype属性。此外,还探讨了实例成员、原型方法、静态方法以及迭代器和生成器方法的使用。
摘要由CSDN通过智能技术生成

ECMAScript 6 新引入的 class 关键字具有正式定义类的能力。class(类) 其实是对ES5 的构造函数 , 继承等进行了封装 , 语法糖等 , 使的构造函数创建,继承等像使用类一样。

类定义

与函数类型相似,定义类也有两种主要方式:类声明和类表达式。这两种方式都使用 class 关键字加大括号。

// 类声明
class Person {
   }     // 不需要小括号
// 类表达式
const Animal = class {
   }; 
类表达式

类表达式可以只有变量名, 也可以有类名和变量名

const person = class perClass{
   }

以这种方法创建的类 , 可以在类里面使用这个类名 , 不能在外部使用一个类名

console.log(perClass)  // ReferenceError: perClass is not defined

而如果要获取这个类名

console.log(person.name)  // perClass (字符串)

注意 : 类的定义不会被提升

类受块作用域限制 , 即如果是在 IF里面创建的类 , 也是不能被外部引用的

if (true) {
   
  class person {
   }
}
console.log(person);  // person is not defined
类的构成

类可以包含构造函数方法实例方法获取函数设置函数和静态类方法,但这些都不是必需的。空的类定义照样有效。默认情况下,类定义中的代码都在严格模式下执行。

类构造函数

constructor 关键字用于在类定义块内部创建类的构造函数。**方法名 constructor 会告诉解释器在使用 new 操作符创建类的新实例时,应该调用这个函数。**构造函数的定义不是必需的,不定义构造函数相当于将构造函数定义为空函数。

实例化

使用 new 操作符实例化 Person 的操作等于使用 new 调用其构造函数。并且会将实例化对象以 this 传入 。

class Class1 {
   
  constructor(name) {
   
    console.log(this); // Class1 {} , 类的实例化对象
    this.name = name
  }
}
const c1 = new Class1('c1')
console.log(c1); // Class1 { name: 'c1' }
console.log(c1 instanceof Class1); // ture

默认情况下,类构造函数会在执行之后返回 this 对象。,如果没有其他地方再使用到这个 this 对象 , 那么它会被销毁。

不过,如果返回的不是 this 对象࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无糖的酸奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值