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 关键字实现的继承要比使用原型实现的继承更方便一点,也更清楚一点。

Unity URP风格化水面Shader全流程实现与性能优化指南 在游戏开发中,Shader是实现特定视觉风格的核心技术,它通过编写在GPU上运行的程序,控制模型每个像素的最终颜色与光照表现。其原理在于对顶点位置、纹理坐标、光照信息及深度等数据进行一系列数学运算与插值。这项技术的价值在于能够以极高的自由度创造从写实到卡通的各种渲染效果,同时通过算法优化实现对硬件资源的精准控制。在移动游戏、独立游戏等对性能与风格化有强烈需求的场景中,自定义Shader尤为重要。本文聚焦于使用Unity URP渲染管线,从零构建一个高效的风格化水面Shader,详细拆解了深度色、波浪动画、边 阅读详情

相关推荐

Halcon实战:基于图像清晰度自动筛选最佳对焦图片

本文详细介绍了如何使用Halcon实现基于图像清晰度的自动筛选最佳对焦图片技术。通过分析灰度值统计和标准差等核心指标,结合实战代码示例,帮助开发者高效处理工业检测中的对焦问题,提升自动化检测的准确性和效率。

weixin_27015733的博客 440

ES2015(ES6)+

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

weixin_46873254的博客 1905

内核工作FAST‘25 Artifact Evaluation流程记录

在我们的paper中,复现需要用到傲腾持久化内存,因此,需要AE Reviewer访问到内网服务器中。我们的思路是购买云服务器,将其作为跳板机,内网服务器通过SSH反向代理与公网服务器建立隧道,AE Reviewer通过隧道访问内网服务器。我们在AE过程中使用。然后,把一切复现需要的代码环境,在chroot里面配置完成。

不定期更新系统使用、编程小技巧,哔哩哔哩账号:https://space.bilibili.com/399455629,欢迎关注 1215

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

基于Active-HDL的HDL设计录入与仿真

作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 优快云: https://me.youkuaiyun.com/qq_4053...

一个会写代码的烤鸭 7782

如何免费访问和使用Gemini API?

Gemini Ultra具有最先进的性能,在几个指标上超过了GPT-4的性能。它是第一个在大规模多任务语言理解基准测试中超越人类专家的模型,该基准测试57个不同学科的世界知识和解决问题的能力。Gemini是谷歌迄今为止开发的最先进、最庞大的AI模型。它为多模态而建,理解并处理不同类型的数据,比如文本、代码、音频、图像和视频。下面我们将加载Masood Aslami的图像,并用它来测试Gemini Pro Vision的多模态性。有了Gemini可以为查询提供图像、音频和文本,获得几乎完美的答案。

java_cjkl的博客 1万+

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

手把手教你用ADS仿真FMMT417雪崩三极管,搞定射频脉冲源设计

本文详细介绍了如何使用ADS仿真工具设计基于FMMT417雪崩三极管的射频脉冲源。从器件选型、SPICE模型导入到电路设计与优化,提供了一套完整的实操方案,特别适合射频脉冲设计的初学者。通过级联设计和实测验证,帮助工程师快速掌握雪崩电路的应用技巧,提升射频脉冲源的设计效率。

weixin_30905981的博客 490

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

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

sinat_30491515的博客 738

有限元缺陷:剪切锁死

有限元缺陷:剪切锁死

wsxww11的博客 5189

2025美赛C题奥运奖牌榜模型(附代码+全保姆教程)Models for Olympic Medal Tables

伟大教练”效应的测量方法定义奖牌变化率:−−​如果变化率显著为正,且超出历史平均增长率,则认为存在“伟大教练”效应。使用统计方法(如t检验)验证教练到来是否带来显著性差异。

博客 6371

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

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

Three_ST的博客 393

作为专家系统与应用的审稿人:提醒你投稿注意事项

本文为《专家系统与应用》(ESWA)期刊投稿指南,重点强调研究方向匹配性、学术质量和写作规范。要求论文以智能系统/算法为核心,突出增量创新并具可验证性,需包含严谨方法论和充分实验验证。写作需结构清晰,符合期刊格式要求,包括明确的研究问题、分类文献综述、详细技术实现和量化结果。投稿前需仔细核对期刊指南,引用相关文献,并妥善处理审稿意见。ESWA注重创新实质性和应用落地价值,建议突出智能系统设计核心,避免成为单纯技术应用描述。

ZhangJiqun&191cm&85kg 1803

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

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

gitblog_00835的博客 295

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

系统化学习ECMAScript 2015

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

weixin_42745935的博客 345

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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、付费专栏及课程。

余额充值