class
1、认识Class:
类可以看作是对象的模板,用一个类可以创作出许多不同的对象。
2、class的基本用法:
(1)类名一般首字母大写(用来区分这是类)调用class类必须要加new;(2)声明类 class Person{},后面不需要写分号;
(3)类里面的构造方法:constructor(){},实例化时执行构造方法,所以必须有构造方法,但可以不写出来(浏览器会自动生成一个)接收值也是在constructor方法中接收。
(4)一般在构造函数方法(constructor(){})中定义属性(因为她们的属性可以不一样);方法不在构造方法中定义。
(5)方法只能用es6简洁的写法,函数名直接(){}(省去function和:),方法在constructor外面写,是各个实例共享的方法,相当于构造函数的prototype中写的。
(6)在class中没有,号和;号,可以直接写与对象不同。
(7)调用方法的方式和对象一样。
(8)const Person = class{};声明方式2,跟匿名函数差不多;
(9)立即执行类,new(class{ comstrcutor(){}});跟立即执行函数差不多,但是前面必须加类;
3、class与构造函数:
4、实例属性,在constructor里面的就是实例属性,相同属性在写在constructor外面,不需要定义,直接属性名=属性值;等于默认属性,如果更改则需要直接在consuctor里面this.什么=形参就可以接收更改的值(方法就是值为函数的特殊属性)。5、(静态方法)类的方法:关键字(static)写在方法前面就是静态方法。类的方法跟实例对象的方法写在一起。
6、(静态属性)类的属性:因为static设置属性有兼容性问题。我们可以直接用static设置方法的return返回值,返回想要的属性值就可以了。
7、私有属性和方法:
1.为什么需要私有属性和方法,一般情况下,类的属性和方法都是公开的,公有的属性和方法可以被外界修改。造成意想不到错误;
2.模拟私有属性和方法:
(1)、1._开头表示私有(行业规定)可以用方法把属性this出去;
(2)、2.将私有的属性和方法移出类,封装 在自己的模块中;
extends继承关键字
1.子类继承父类:前面写子类,后面写父类 不能忘记class,举例:class 子类名字 extends 父类名字,因为是继承的父类的构造方法,所以子类的构造方法内需要调用一下父类的构造方法;这一步是必须的,需要使用super这个关键字,此时的 super指代父类的构造方法,那样可以直接调用,super(),相当于直接调用了父类的构造方法。如果父类的构造方法中需要传入参数,则super中也要传入一样的参数。因为是外部传来的参数,那样子类的constructor也需要有一样的参数。2.改写继承的属性或方法
(1)如果子类有跟父类名字一样的属性或者方法,子类会代替父类(同名覆盖)如果不是同名的则是自己的方法;
(2)子类如果想增加父类以外的属性,就可以直接在constructor里面添加自己增加到形参,然后this就可以了,但是this的属性必须要在super()后面不然会报错(super前 面不能有this操作);
super继承关键字
1.作为函数的调用;
(1)代表父类的构造方法,只能用在子类的构造方法中,用在其他地方就会报错。
(2)super虽然代表了父类的构造方法,但是内部的this指向子类的实例。
2.作为对象使用(在构造方法(或一般方法)中使用);
(1)1.super代表父类的原型对象父类.prototype.(这样子类父类同名就可以super打点调用父类的方法或者属性);
(2)2.定义父类实例上的方法或属性,是无法通过super调用的(this指向实例)。
(3)3.通过super调用父类的方法时,方法内部的this指向当前的子类实例。
3.在静态方法中使用
(1)指向父类,而不是指向父类的原型对象。
(2)通过super调用父类的方法时,方法内部的this指向当前的子类,而不是子类的实例。
3.注意事项;
(1)使用super的时候,必须显示指定是作为函数还是作为对象使用,否则会报错。
(2)2.定义父类实例上的方法或属性,是无法通过super调用的(this指向实例)。
(3)3.通过super调用父类的方法时,方法内部的this指向当前的子类实例。
3.在静态方法中使用
(1)指向父类,而不是指向父类的原型对象。
(2)通过super调用父类的方法时,方法内部的this指向当前的子类,而不是子类的实例。
3.注意事项;
(1)使用super的时候,必须显示指定是作为函数还是作为对象使用,否则会报错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?