ES2015 类、静态方法与类的继承

JavaScript 类初学者指南 静态方法是在类本身中定义的,而不是在对象上。正如您在上面的示例中看到的,您通过引用对象的方法名称后跟圆括号来调用原型方法(任何参数都将放在圆括号内)。用类继承创建的类继承了另一个类的所有方法。在上面的示例中,Model 类继承了Car类的所有方法。通过在构造方法中调用super()方法,我们调用了父类的构造方法并获得了对父类属性和方法的访问权。继承对于代码的可重用性很有用,我们可以在创建新类时重用现有类的属性和方法。原型方法是一种只有在创建类的实例时才能访问的方法。原型方法:area() 是一个原型方法。 阅读详情

class 类

在此之前,ECMAScript 中都是通过定义函数以及函数的原型对象来实现的类型。如下代码所示:

function Person(name) {
  this.name = name
}

如果需要这个类型所有实例之间共享一些成员,可以借助于函数对象的 prototype 来实现。如下代码所示:

Person.prototype.say = function () {
  console.log(`hi, my name is ${this.name}`)
}

自从 ECMAScript2015 开始,就可以使用 class 关键字来声明一个类型。这种独立定义类型的语法相比于之前函数的方式要更容易理解一点,结构也会更加清晰一些。如下代码所示:

class Person {

}

这种语法和一些传统的面向对象语言当中的 class 是非常相似的。如果说需要在构造函数当中做一些额外的逻辑,可以添加一个叫做 constructor() 方法,这个方法就是当前类型的构造函数。如下代码所示:

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

如果想要为这个类型定义一些实例方法,只需要在这个类型里面添加对应的方法成员就可以了。如下代码所示:

class Person {
  constructor(name) {
    this.name = name
  }
  say() {
    console.log(`hi, my name is ${this.name}`)
  }
}

完成之后,同样可以使用 new 关键字来创建这个类型的实例对象。如下代码所示:

const p = new Person('前端课湛')
p.say()

上述代码的运行结果如下:

hi, my name is 前端课湛

静态成员

在类型当中的方法,一般分为实例方法和静态方法。实例方法就是需要通过这个类型构造的实例对象调用,而静态方法则是直接通过类型本身调用。

在 ECMAScript2015 之前想要实现静态方法就是直接在构造函数对象上挂载方法实现,因为在 JavaScript 语言当中函数也是对象,它也可以添加一些方法成员。

而在 ECMAScript2015 中新增了添加静态方法的 static 关键字。如下代码所示:

class Person {
  constructor(name) {
    this.name = name
  }
  say() {
    console.log(`hi, my name is ${this.name}`)
  }
  static create(name) {
    return new Person(name)
  }
}

const p = Person.create('前端课湛')
p.say()

上述代码的运行结果如下:

hi, my name is 前端课湛

这里需要注意的是,因为静态方法是挂载到类型上面的,所以说在静态方法内部的 this 就不会指向某一个实例对象,而是当前的类型。

类的继承

继承是面向对象中一个非常重要的特性,通过继承这种特性就能够抽象出来相似类型之间重复的部分。在 ECMAScript2015 之前,大多数情况都会使用原型的方式实现继承。而在 ECMAScript2015 中新增了一个专门用于实现继承的 extends 关键字。如下代码所示:

class Person {
  constructor(name) {
    this.name = name
  }
  say() {
    console.log(`hi, my name is ${this.name}`)
  }
}

class Student extends Person {
  constructor(name, number) {
    super(name)
    this.number = number
  }
  hello() {
    super.say()
    console.log(`my school number is ${this.number}`)
  }
}

const s = new Student('大叔', 100)
s.hello()

从上述代码可以看到,在子级类型当中可以通过 super 关键字指向父级类型,从而调用父级类型的方法成员。上述代码的运行结果如下:

hi, my name is 大叔
my school number is 100

通过 extends 关键字实现的继承要比使用原型实现的继承更方便一点,也更清楚一点。

ROS与UR10e机械臂实战:从零搭建到精准控制 本文详细介绍了如何从零开始搭建ROS与UR10e机械臂的开发环境,包括硬件准备、软件配置、网络设置以及MoveIt!运动控制实战。通过具体的代码示例和常见问题排查,帮助开发者快速掌握UR10e机械臂的精准控制技术,适用于工业自动化和实验室研究场景。 阅读详情

相关推荐

腾讯云智后台开发实习面试全纪录(已offer)

腾讯云智后台开发实习面经

wenwenaier的博客 5904

ES2015(ES6)+

JES2015-ES6目录名词释义ECMAScriptES2015ES6let 和 const箭头函数函数的参数默认值用法示例模板字符串扩展(展开) 运算符解构赋值对象解构赋值数组的解构赋值应用-解构赋值结合函数声明对象成员的简写概述Symbol作为对象属性Symbol.for内置SymbolSymbol的属性Set和WeakSetSet实例WeakSetMap和WeakMapMap实例1:扩展对象实例2:完善私有属性的实现WeakMap实例:完善私有属性的实现ProxyReflect 反射Iterator

weixin_46873254的博客 1905

岭回归的MATLAB步骤

MATLAB 实现框架,它涵盖了从数据导入到岭回归的步骤,包括计算共线性、使用 MAE、MSE、R²、MAPE 进行评价,以及绘制相应的可视化图表。

subject625Ruben的博客 1090

ES2015 class

一、类 class ES2015以前 ECMAScript都是通过定义函数和定义原型对象来实现类 // 比如定义一个Person类 // 先定义一个函数,作为类的构造函数 function Person(name){ this.name = name; } Person.prototype.say = function(){ console.log(`say ${this.name}`) } ES2015以后 新增了class关键词来声明一个类 class Person{ // 如果需要在

路遇惊喜 382

【自动驾驶规划】Lattice Planner

Lattice Planner简介 LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。局部规划模块的输出是带有速度信息的一系列轨迹点组成的轨迹,其保证了车辆控制器在车辆跟踪控制过程中的平稳性和安全性。 局部规划模块的输出是带有速

uytguytgf的博客 6497

专栏丨华为HN8145XR光猫获取超级管理员密码

摘要:本文详细介绍了华为HN8145xr光猫获取超级管理员权限的完整步骤。首先通过ONT使能工具补全shell,然后利用Telnet登录光猫后台进行操作。文章提供了多种获取超级密码的方法,包括配置文件解密、一键查询工具等,并针对联通光猫特别说明了默认密码格式(CUAdmin+后八位数字)。此外,还介绍了恢复出厂设置、修改SSID等实用操作,帮助用户完全掌控光猫设备。文末附有详细的命令行操作指南,适合有一定技术基础的用户参考。

8259

es2015,类,静态方法,继承, Set,Map,Symbol,iterator迭代器

es2015 中的类 class Pro { constructor(name){ this.name=name } say(){ console.log(`hi,${this.name}`); } // 静态方法 static create(name){ return new Pro(name) } } // const p = new Pro("zom") const p = Pro.create("zom") p.say() //hi,z.

ybilss的博客 190

《唤醒你的AI同事:WorkBuddy从零上手》004:与其他 AI 工具的对比

把 WorkBuddy 与聊天机器人、办公套件内置 AI、自动化工具逐维对比,并按当前版本补充四项新差距:结果交付、连接器广度、资料库与多模态产出。

LuckyHanMo的博客 671

ES2015+学习笔记系列(七)—— Class类

目录class类类定义class静态成员ES5方式实例对象ES6中class静态成员对象继承ES5使用构造函数实现对象继承ES6中class对象继承子类对父类方法的重写class中getter和setter class类 作为对象模板,通过class关键字,可以定义类。 基本上,ES6的class可以看做知识一个语法糖,他的绝大部分功能,ES5都可以做到。 新的class写法只是让对象原型的写法更加清晰、更像面向对象的语法而已。 类定义 构造方法,名字必须为constructor,不可修改 方法必须使

sinat_30491515的博客 738

3. 动手运行第一个 SAP Fiori Elements 应用(ListReport 类型)

这个代理服务器能够自动监听我们 Fiori Elements 应用里向 ES5 Demo 系统发送的 OData 请求,拦截这个请求,并通过 Node.js 代码向 ES5 服务器转发,拿到响应数据后再交还给 Fiori Elements 应用。后者对自己发出的请求被代理这件事情一无所知。本文的任务是,大家按照我的介绍,在本地成功运行笔者准备的这个 Fiori Elements 应用。的错误消息, 说明大家安装的 Node.js 版本没有达到本地运行 Fiori Elements 的最低要求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1671

用Excel或WPS做两独立样本的T检验

一般情况下收集数据时常用的是Excel或者WPS,但统计时却用SPSS等软件进行统计学分析,经常很多人找不到SPSS的安装包,或者苦于正版激活或忘记教程,其实Excel或WPS自带函数就足够了,均数、标准差以及统计检验都是一个函数而已。解释:先做F检验,如果F>0.05就做T检验,Ttset里的数据为两组的数据的比较,结果如下。A组的均数计算 =AVERAGE(B2:B6)A组的标准差计算 =STDEV(B2:B6)B组的标准差计算=STDEV(B7:B19)分组 数值 A组均数 A组标准差 p值。

Mrrunsen的博客 6752

JavaScript学习之ES6 ES2015学记笔记(十二)-类(Class)

class在很多面向对象编程的语言中已经很成熟 JS目前面临的问题 用JavaScript新建一个circle类:具有如下功能: 在给定的 Canvas 上绘制一个给定圆。 跟踪记录生成圆的总数。 跟踪记录给定圆的半径,以及如何使其值成为圆的不变条件。 计算给定圆的面积 function Circle(radius) { this.radius = radius; C...

Three_ST的博客 393

Vue - 超强实现网页禁止浏览器缩放功能,浏览器缩放时保持网页不变形、元素不会被挤压等,屏蔽浏览器鼠标滚轮缩放页面(提供详细示例代码,一次引入整个网站无人可以搞乱你的页面布局及样式)

vue,nuxt,禁止浏览器缩放,如何用户缩放浏览器导致页面变形,网页缩放后页面变形了怎么办,怎么解决网站被缩放后元素乱套错乱,vue怎么禁止网页不被缩放,vue如何禁止浏览器缩放,vue缩放网页变形影响布局怎么办,vue电脑分辨率及缩放导致页面变形的问题,前端页面解决浏览器或者系统被放大和缩小导致的显示问题,Vue中页面自适应缩放,如何防止Vue页面缩放时变形/调整大小,Vue项目中,防止页面被缩放和放大,vue等比例缩放网页,网页缩放后界面变形咋办,禁止页面缩放,vue禁止浏览器改变窗口大小,Vue项目

🏆 前端领域优质创作者 1万+

MDN学习区:深入理解JavaScript ES2015类继承机制

在JavaScript开发中,面向对象编程(Object-Oriented Programming, OOP)是构建复杂应用的核心范式。ES2015(ES6)引入的类语法彻底改变了JavaScript的面向对象编程方式,让开发者能够以更直观、更接近传统面向对象语言的方式编写代码。 你是否曾经遇到过这样的困境: - 多个对象具有相似的属性和方法,却需要重复编写代码? - 想要扩展现有功能,但担心破...

gitblog_00835的博客 295

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

系统化学习ECMAScript 2015

系统化学习ECMAScript 2015老生常谈: const let var数组的解构对象的解构模版字符串的高级用法默认值参数剩余参数彻底弄懂箭头函数没有单独的this.while 阻断主进程谁也执行不了,等我执行完才行。对象字面量的增强Object.assign 扩展方法Object.is 判断两个值是否相等 (感觉用处不大)Object.defineProperty 和 Proxyproxy 监听数组classstaticextendssetMap 类似与对象。Symbol 一种全新的原始数据类型。f

weixin_42745935的博客 345

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ECMA2015(ES6)简单入门-3-迭代器-生成器-定义类-__静态方法__继承

自定义迭代器 // {value: xx,done: true/false}function chef(foods){ let i=0; return { next(){ let done =(i>=foods.length), value= !done ?foods[i++]:undefined;

知其白,守其黑;和其光,同其尘。 358

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ECMAScript新特性----ES6

ECMAScript新特性 1. ECMA概述 ECMASCript提供了最基本的语法 2015年每年一个版本的迭代 javaScript@web ECMAScript操作的是DOM和BOM javaScript@NodeJS ECMAScript操作的是NodeJS的API 2.ES2015概述 解决原有语法上的一些问题或者不足 对原有语法进行增强 全新的对象,全新的方法,全新的功能 全新的数据类型和解构 3.let与块级作用域 作用域某个作用成员能够生效的范围 ES6以前只有两种作用域

你若成风,我则化雨 185

JS ES6学习总结 拉钩模块二

目前大多数人还没搞明白语言和平台之间的关系。 ECMAScript 概述 ES是JS的扩展语言,也可以说ES就是JS。 ES2015 概述 ES2015 let 与块级作用域 ES5前只有俩种作用域,全局和函数作用域,ES5后多了块级作用域。 但使用let就不能获取到了。 1不能let重复声明 if (true) { var foo = 'zce' var foo = 'zce' console.log(foo) } // OK if (true) { var foo = 'zc

weixin_45345105的博客 445

解析ES2015中的静态方法

我们知道Java中存在静态方法,并且我们可以通过类名.静态方法名()的方式,当然也可以通过实例对象名.静态方法名()进行调用(不推荐)。因为静态方法的存在,使得我们可以很方便地在类上定义各种通用方法。那么,在JavaScript中有没有像Java中那样的静态方法呢? 我们先来看一段如下的JavaScript代码: var Component = function _Component(obj) {...

www.wuxianjie.net 673

ES6-ECMAScript6

d.dead zone 死区。

likeablegirl88的博客 45

在拉钩学习的笔记(十一)ES6新特性

1、 ECMAScript 概述 通常将 ECMAScript 看作是 JavaScript 的标准规范;实际上 JavaScript 是 ECMAScript 的扩展语言, ECMAScript 只是提供了最基本的语法 2015 年开始 ES 保持每年一个版本的迭代; ES2015 开始按照年份开始命名,很多人习惯将 ES2015 称之为 ES6 2、 ECMAScript2015 最新 ECMAScript 标准的代表版本 http://www.ecma-internat...

Yao_Huang_的博客 178

JavaScript 中 ES6

ES6的面向对象编程引入了类、构造函数、继承、静态方法、Getter和Setter等特性,使得JavaScript更加适合大型应用程序和复杂的代码组织。这些新的语法和特性提供了更清晰、更模块化的代码结构,使得面向对象编程更加直观和易于理解。在ES6(ECMAScript 2015)中,JavaScript引入了一些新的语法和特性来支持面向对象编程(OOP)。箭头函数是ES6中的一种新的函数语法,它具有更简洁的语法形式和词法作用域绑定。类是对象的蓝图,用于定义对象的属性和方法。

ultramand的博客,重生之我在cad上二次开发猛猛敲C#代码~ 1053

ES6新特性(五)class类

一、创建类和对象 1.1. 在ES5中使用的是function关键字创建类, ES6引入了 class 关键字来创建类。 1.2. 创建类的实例使用 new 关键字。 ** 1.3. 类的 constructor 构造函数:用于传递参数,返回实例对象,通过 new 关键字生成实例时,自动调用该方法。如果没有显式声明构造函数,在类的内部会自动创建一个默认的constructor()构造函数。** 1...

F_mengze的博客 236

令人振奋的Class(下):继承和实战代码示例

ES2015新引入的class有个令人兴奋的”继承” class User { constructor(n) { this._name = n; } showme() { console.log(this._name); } } // 继承 class student extends User { constructor(sname) {

大灰狼的小绵羊哥哥的博客 336

JS类教程 Lynda中文

JavaScript: Classes 中文字幕 JavaScript:类 中文字幕JavaScript: Classes ECMAScript 2015的发布为JavaScript提供了类语法,为开发人员提供了一些熟悉的工具来继承类继承 如果您不熟悉该语言 - 或者只是不确定ECMAScript 6(ES6)中的课程如何工作 - 那么本课程适合您 加入讲师Emmanuel Henri,他解释了...

lyndacn的博客 317

ES2015简介和基本语法

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。也就是说,ES6就是ES2015。 说明:此文章根据《实战ES2015:深入现代JavaScript+应用开发》这本书做的笔记,更多详细内容请查看书籍。电子版在文章底部。 一、ECMAScript的发展历程 ...

weixin_30297281的博客 283
上一篇: 伪元素选择器:真实与虚伪只隔一个选择器
下一篇: ES2015 Set与Map数据结构
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值