ES6学习笔记八:类与继承

news/2024/7/7 7:43:23

一:Class

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。

定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。

创建类对象:使用new命令即可。

 

constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

 

类定义不存在变量提升(hoist),所以如果在定义类定义之前使用new创建类对象,就会报错。

 

getter和setter函数:使用set、get关键字即可

class MyClass {
  constructor() {
    // ...
  }
  get 属性名() {
    return 属性值;
  }
  set 属性名(value) {
    this.属性=value;
  }
}

let inst = new MyClass();

inst.属性名 = 值;//调用setter

inst.属性名;//调用getter

 

生成器函数:

某个方法之前加上星号(*),就表示该方法是一个 Generator 函数。

 

静态方法:

如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。

 

二:继承

Class 可以通过extends关键字实现继承。

子类必须在constructor方法中调用super方法,否则新建实例时会报错。

 

super关键字的两种调用:

第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数z必须执行一次super函数。

constructor() {
    super();
  }

第二种情况,super作为对象时,在普通方法中,充当父类对象,调用父类中的属性与方法。

func() {
   super.xxx;
  }

 

三:原生数据结构的继承

ECMAScript 的原生构造函数大致有下面这些。

  • Boolean()
  • Number()
  • String()
  • Array()
  • Date()
  • Function()
  • RegExp()
  • Error()
  • Object()

ES6 可以自定义原生数据结构(比如ArrayString等)的子类,使用extends关键字继承即可。

因此可以在原生数据结构的基础上,定义自己的数据结构。

 

四:Mixin

将多个类的接口“混入”(mix in)另一个类。

可以定义一个类,在其中引入其它类的方法们。

 


http://www.niftyadmin.cn/n/4596942.html

相关文章

默默前行的livego--基于go语言的rtmp直播服务器

为什么go语言,原因太多了! 轻量级协程,随时goroutine方便的channel方便的interface强大的服务器性能简单点GO语言---为服务器而生!我们来看看: livego--基于go语言的rtmp直播服务器github地址: https://github.com/runner365/liv…

Vue 的自我模拟面试

vue的响应系统 vue的mvvm框架,当数据模型data变化时,页面视图会响应更新 原理对data的getter/setter方法进行拦截, 利用发布订阅的设计模式。 在getter中进行订阅,在setter方法中发布通知,让所有订阅者 完成响应。在响…

WIN32_FIND_DATA 详细结构(附循环读取文件代码)

//去除路径最后多余的斜杠和反斜杠 std::string TrimPath(std::string path) {//string test3("内容"); 使用引用字符数组作为参数传给构造函数std::string illegal(" \t\f\v\n\r\\/");//string 赋值size_t pos path.find_last_not_of(illegal);//从后往…

不公平才是世界的真相----摘自罗辑思维

不公平才是世界的真相如果让你来模拟上帝。给世界上全部人分配財富。你必须依照什么原则分配,才会得到一个与真实世界差点儿相同的结果呢?首先你不可能均匀分配,否则世界上就不会有穷人和富人的差别。你可能会考虑随心情分配,今天…

vue通讯e

在这里插入代码片 父级向子级通讯(利用props)父级&#xff1a;data(){return{**tit:加油加油 &#xff01;**}}子级&#xff1a;props:[tit] 接收<val1 :tit"tit"></val1>子级向父级通讯(利用回调函数)子级&#xff1a;this.$emit(solgan,this.val)父级&…

项目上线相关配置配置 https服务

项目上线相关配置 使用pm2管理应用 1在服务器安装 pm2 :npm i pm2 -g 启动项目 pm2 start 脚本 --name 自定义名称 查看运行项目 pm2ls 重启项目 pm2 restart 自定义名称 停止项目 pm2stop自定义名称 删除项目pm2delete自定义名称 ***## 在这里插入代码片*** 配置 https服务 ht…

为何游戏公司青睐工作室制度

在传统游戏公司转向手游之后&#xff0c;工作室的模式变得越来越流行起来。 早期传统游戏业的生产方式普遍是集团军项目制&#xff0c;这种组织形式一般都是集团共同分配大锅饭&#xff0c;往往造成一部分产品的研发周期长、出品见效慢、产品质量无法保障、内部管理混乱等问题。…

Activity生命周期(待整理)

1. 定义 有一些方法共同定义生命周期&#xff0c;如下图示&#xff1a;&#xff08;图片来自于官网文档&#xff09; 2. onStart()——在Activity即将对用户可见之前调用 &#xff08;1&#xff09;Activity启动动画、二维动画在onStart()中编写 &#xff08;2&#xff09;传感…