JS高级之ES6类与对象、静态成员、类的继承
一、类与对象
什么是类?
好比:人类、动物类
就是一个群体的统称
类里描述这一类群体,有哪些特征和行为,所谓的特征对应到代码中就是属性,行为对应到代码中就是方法
类理解为是一套描述数据的模板,但是没有具体的数据
在ES6以前JS里是没有类专门的语法,都是通过 构造函数
起到类的作用
什么是对象?
某一个群体里的实际例子
对象可以理解为是根据模板创造出来的具体的数据
所以我们经常把 创建对象
叫做 实例化对象
ES6里声明一个类的语法
class 类名 {constructor() {// 给它描述有哪些属性}// 方法列表
}
例:
class Person {constructor(name, age) {// 给它描述有哪些属性:姓名、年龄this.name = name,this.age = age}// 方法列表,在这里写方法不用加function// 语法:方法名 () { 方法体 }eat() {console.log('吃啊吃')}sleep () {console.log('睡啊睡')}}// 通过类来创建对象(实例化对象)let p1 = new Person('jack', 16)console.log(p1)p1.eat() p1.sleep()
二、静态成员
静态成员
:
在ES6以前,由构造函数直接调用的属性和方法叫静态成员
在ES6以后,由类直接调用的属性和方法叫静态成员
在类里面对变量、函数加 static
关键字,那它就是静态成员
class Person {// 加一个static关键字,那这就是静态成员static name = "Person"static version = "v0.0.1"static test () {console.log('我是静态方法test')}}console.log( Person.name )console.log( Person.version )Person.test()let p1 = new Person() console.log(p1.name) // undefinedconsole.log(p1.version) // undefined 因为没有加实例成员
静态成员不会被实例化成为新对象的元素
三、类的继承
面向对象三大特征:
封装、继承、多态(前端用不上)
继承语法:
class 类名 extends 父类名 {constructor() {// 必须先调用super()// 给自己独有属性赋值}// 方法列表
}
例
// 人类// 如果没有写extends,那默认继承自Object// 相当于写了一个 extends Objectclass Person {constructor(name, age) {this.name = namethis.age = age}eat() {console.log('吃啊吃')}}// 声明一个中国人类,并继承自人类class Chinese extends Person {constructor(name, age, hukou) {// 是专门用来继承父类的属性的// 必须先调用super然后才能给自己的属性赋值super(name, age)//super将参数给到被继承的Personthis.hukou = hukou}spring() {console.log('过春节放鞭炮')}}let lilei = new Chinese('李雷', 16, '北京')console.log(lilei)lilei.spring() lilei.eat()
- 注意:如果没有写
extends
那么默认继承自Object
- 细节:如果子类里没有写
constructor
那么默认调用父类的constructor
四、类的本质与继承的本质
- 类的本质就是构造函数,所以类里的方法也都是放到构造函数.prototype里面的
- 这种语法我们称之为
语法糖
- 继承的本质:
- 还是通过
原型链
继承到方法 - 还是通过调用父类的构造函数并修改它里面的this指向来达到属性继承
- 还是通过
JS高级之ES6类与对象、静态成员、类的继承相关推荐
- JavaScript从入门到放弃 - ES6中的对象和类
重点讲解Tab栏切换.增.删.改 1. 面向过程与面向对象 2.ES6 中的对象与类 2.1 对象 2.2 类 2.2.1 创建类 2.2.1.1 语法 2.2.1.2 实例 2.2.2 类创建添加属 ...
- C++ 类与对象_类的其他成员(常成员,静态成员,友元)
系列文章目录 重新复习c++,所以把书中的重点内容整理成博客,尽量简洁,易懂. C++ 类与对象_类和对象的定义与访问 (定义类和对象,访问对象成员,this指针) C++ 类与对象_构造函数和析构函 ...
- python中组合与继承的区别_python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...
- java类与对象_Java类与对象
类与对象 1,面向对象编程简介 Java语言最大的特点在于面向对象的编程设计,并且面向对象的编程设计也在由于Java自身的发展而不断发展.面向过程编程(C语言).函数式编程(Scala).面向对象编程 ...
- php函数、类和对象以及类的封装、继承、类的静态方法、静态属性
php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数 php内置函数可以直接使用,如果没有安装php扩展即可 ...
- 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用
实验四 类和对象:类的继承和派生:多态性: 接口:构造器应用 一.实验目的 1. 掌握类与对象的关系: 2. 掌握类的定义: 3. 掌握对象的声明及使用: 4. 掌握构造方法的概念及调用时机: 5. ...
- JAVA基础--java简单知识04(类与对象,封装,继承,多态)
类与对象 在学习Java中,最重要的就是面对对象,面对对象三大特性:封装,继承,多态 什么是面对对象? 面对对象,就是你在进行开发时,把所有能够认知到的事物看做对象,去描述它的行为和特征. 什么是类和 ...
- c++类和对象(类的概念)
1.类和对象概念 类:用来对实体(对象)进行描述,对象有什么属性,以及对象具有什么功能是一种自定义类型 对象:现实生活中所存在的 ,对象是对类的具体体现 用类类型创建出来的变量称为对象 2.类的定义 ...
- mysql构造器_类和对象,类的构造器,魔术方法__get()和__set(),mysql连接数据库的方式--2018年8月30日11时38分...
这一节课主要讲的是类和数据库的知识,主要是类和对象,类的构造器,魔术方法__get()和__set(),mysql连接数据库1. 什么是类 ?什么是对象?举例说明 答:类是对象的模板,对象是类的一个实 ...
- 类、对象、封装、继承和多态等,一目了然!
当谈到面向对象编程的概念和原则时,以下是一些示例来说明类.对象.封装.继承和多态的概念: 类(Class): 类是一种定义对象属性和行为的蓝图.它描述了对象的状态和行为.例如,我们可以创建一个名为&q ...
最新文章
- android 把assets 里面的图片文件输出到SD卡
- 安装spark1.3.1单机环境
- SAP Fiori My task里complete checkbox的处理
- jzoj4802-[GDOI2017模拟9.24]探险计划【费用流,拆点】
- 解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketExceptionsocket closed
- data为long 怎么设置vue_vue基础之data
- ADB投屏_最强开源投屏神器,跨平台电脑控制+文件传输——scrcpy
- codeforces-1201 C Maximum Median
- 【Elasticsearch】实用BM25 -第1部分: shard 如何影响Elasticsearch中的相关性评分
- 常用工具使用(sublimeText)
- c语言代码re通常什么错误,求帮助 C语言realloc和free触发断点的问题
- 以用户为师,报喜鸟用需求助力云备份产品创新
- 协作多智能体强化学习中的回报函数设计
- Wireless工具配置
- 北京致芯科技STM32F107VC 芯片解密 代烧录
- 这一年,我所阐释的Linux哲学
- 解决fbreader从书架打开的是同一本书问题
- c语言中感叹号什么意思_感叹号的意思
- Win10设置每天定时运行某程序(关注不迷路,加星不糊涂哦~)
- Java将域名转换成IP