当前位置: 首页 > news >正文

[JS]面向对象ES6

class类

ES6是基于 class关键字 创建类

<script>// 1.定义类class Person {// 公有属性name// 公有属性 (设置默认值)age = 18// 构造函数constructor(name) {// 构造函数的this指向实例化对象// 构造函数的作用就是给实例对象设置属性this.name = name// 动态添加属性(不推荐)this.foods = ['西红柿', '土豆']}// 公有方法sayHi() {console.log('hi');console.log(this.name);}}// 2.实例化对象const p = new Person('张三')console.log(p);p.sayHi()</script>
  • 创建类用class关键字
  • 类的实例化使用new关键字
  • 实例属性的初始化使用constructor关键字 (给类的属性设置值)

类的继承

extends关键字用于类声明或者表达式中, 以创建一个类, 该类是另一个类的子类

super关键字用于访问对象字面量或类的原型上的属性, 或调用父类的构造函数

<script>class Person {nameconstructor(name) {this.name = name}sayHi(){console.log('父类的asyhi');}}// --------------子类----------------class Student extends Person {ageconstructor(name, age) {// 继承环境中, 如果子类有自己的属性, 就必须调用super, 否则会报错super(name)this.age = age}// 同名方法, 就近原则sayHi() {console.log('子类的asyHi');}}const p = new Student('张三', 18)p.sayHi()</script>
  • 类的继承使用extends关键字
  • 如果子类有自己的属性, 必须使用super关键字

静态属性

静态: 通过static关键字定义静态属性和方法, 所谓静态就是只能通过类调用, 不能通过实例调用

<script>/*** 静态属性:*    定义: static*    访问: 通过类访问*/class Test {// 静态属性和方法static name = '我是静态属性'static func() {console.log('我是静态方法');}}// 访问静态属性和方法console.log(Test.name); //我是静态属性Test.func() // 我是静态方法</script>

可见性修饰符

私有: 类属性在默认情况下是公有的, 可以通过 前缀 # 定义私有字段, 声明和访问时都需要

<script>/*** 私有属性:*    定义: #name*    访问: #name, *    范围: 只能在类的内部访问*    # 是简写形式, 完整的修饰符是 private */class Test {// 私有属性#info = '我是私有属性1'private info2 = '我是私有属性2'// 私有方法#func() {console.log('我是私有方法');}testPr() {console.log(this.#info);this.#func()}}// 通过实例方法访问私有属性const t = new Test()t.testPr() // 我是私有属性,我是私有方法// 类的外部, 无法访问私有属性和方法// t.#func() // 报错// Chrome控制台中, 可以直接访问私有属性和方法(便于调试)// console.log(t.#info);</script>
// 公有属性:
class Animal {//定义: public修饰符(公有的)//范围: 让类中的所有成员对外可见(默认)public move() {log('1111')}
}// 限制属性: 限制类中的成员对外可见
class Animal {// 定义: protected修饰符(受保护的)// 仅能在当前类和子类继承中可见,对实例不可见.protected move() {log('1111')}
}// 只读修饰符:
class Animal {//定义: readonly //范围: 无法在constructor构造函数之外对属性进行赋值 readonly age = 18constructor(age) {this.age = age}
}

接口

通过接口, 在不改变类的情况下, 增强类的功能和灵活性

// 定义: interface关键字
interface 接口1 {namesing()
}// 继承: implements关键字
// 类实现接口,类必须提供接口中指定的所有方法和属性
class 对象 implements 接口1 {name='小明'sing() { log('1111') }
}

http://www.lryc.cn/news/390643.html

相关文章:

  • ctfshow web sql注入 web242--web249
  • 发送微信消息和文件
  • 数组-螺旋矩阵
  • GitStack详细配置与使用指南
  • LoadRunner-Virtual User Generator组件学习
  • NAT地址转换实验,实验超简单
  • pip常用命令详解
  • vue3从入门到精通
  • kubuadm 方式部署 k8s 集群
  • Android studio 打包低版本的Android项目报错
  • 【教程】lighttpd配置端口反向代理
  • 微服务之服务保护策略【持续更新】
  • 微信小程序的开发
  • Oracle中CREATE FORCE VIEW的说明和例子
  • C#反射基本应用
  • 1.英语中的从句学习
  • Perl语言简介
  • 【SpringBoot3】使用Jasypt加密数据库用户名、密码等敏感信息
  • 如何确定MySQL中哪些列适合做索引
  • C# winform中权限页面的设计和开发
  • 本地Windows电脑 连接 Windows 服务器
  • 【分布式计算框架 MapReduce】MapReduce 初级编程
  • VideoPrism——探索视频分析领域模型的算法与应用
  • Spring Boot项目的两种发布方式
  • Java中的服务注册与发现原理与实现
  • 【Python】成功解决TypeError: ‘float‘ object cannot be interpreted as an integer
  • Java面试八股文
  • 周周星分享7.3—基于气象大数据的自动站实况联合预测
  • 【密码学】面向小白的古典密码基础入门笔记
  • 【Qt】之【Bug】大量出现“未定义的标识符”问题