前端如何实现面向对象

news2024/9/21 16:23:11

交流所记:

面向对象的三要素:

  1. 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类或者对象隐藏信息
  2. 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
  3. 多态:一个类实例的相同方法在不同情形下有不同的表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。

前端实现面向对象,也就是说如何实现封装、继承、多态的问题。

在实现面向对象的三要素之前,首先要创建一个对象,在js中,创建对象的实现手段包括:对象、原型、构造函数等。实践中常用技巧有:

一、对象字面量

二、构造函数

三、原型(js中实现继承的重要机制)

四、ES6中的类

对象创建完成之后,接下来便是如何实现面向对象的三要素:

一、封装

利用闭包、模块化实现属性和方法的封装,模块化是比较推崇的一种方式

二、继承

利用原型链、extends关键字实现继承,继承的方式也有多种:

1、原型链式继承

2、构造函数式继承

3、组合式继承

4、原型式继承

5、寄生式继承

6、寄生组合式继承

三、多态

多态是面向对象编程中的一个重要概念,它允许不同的对象对相同的消息做出不同的响应。在前端开发中,实现多态可以通过以下方式之一:

  1. 继承:使用继承创建一个基类和多个派生类,在派生类中可以重写基类的方法,从而实现多态。在前端开发中,可以通过继承原生的HTML元素类或自定义组件类来实现多态。

  2. 接口:使用接口定义一个或多个方法,然后在多个类中实现这些接口。每个类可以根据自己的需求来实现接口中的方法,从而实现多态。在前端开发中,可以使用TypeScript等支持接口的语言来实现多态。

  3. 函数重载:使用函数重载来实现多态。函数重载是指在同一个作用域内定义多个同名函数,但参数类型和/或个数不同。在前端开发中,可以根据传入的参数类型或个数的不同来调用不同的函数实现多态。

总结

前端如何实现面向对象:

  1. 构造函数和原型链:使用构造函数创建对象,并通过原型链来共享方法和属性。可以使用new关键字实例化对象,并使用this关键字在构造函数中定义属性和方法。然后,通过将方法和属性添加到构造函数的原型上,可以实现方法和属性的共享。

  2. 类和继承:使用ES6引入的类和继承语法来实现面向对象编程。可以使用class关键字定义类,并使用extends关键字实现继承。类中可以定义属性和方法,并使用constructor方法初始化对象。

  3. 原型对象:使用原型对象创建对象,并通过原型链来共享方法和属性。可以使用Object.create()方法创建原型对象,并在原型对象上定义方法和属性。然后,通过将原型对象赋值给新创建的对象的__proto__属性,可以实现方法和属性的共享。

  4. 模块化:使用模块化的方式将代码组织成独立的模块,每个模块都可以封装自己的数据和行为。可以使用CommonJS、ES6模块或其他模块加载器/打包工具来实现模块化。

fix:

虽然JavaScript是一门支持面向对象编程的语言,但它也可以使用其他编程范式,如函数式编程。在前端开发中,可以根据需求选择合适的编程范式或结合多种编程范式来实现代码的可维护性和灵活性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链上衍生品协议 ProsperEx:探索 RWA 叙事,打造 DeFi 变异黑马

“ProsperEx 本身背靠着具备潜力的链上衍生品赛道,同时也是 RWA 领域早期的布局者之一,其有望成为 Web2 世界与 Web3 世界的早期连接点,并具备广泛且规模性捕获用户的能力。” 从2020年DeFi之夏链上世界迎来了爆发后,链上衍生品赛…

SQL21 浙江大学用户题目回答情况

解法一:left JOIN select t1.device_id,question_id,result from question_practice_detail t1 left JOIN user_profile t2 on t1.device_id t2.device_id where university 浙江大学解法二:子查询 select device_id, question_id, result from question_practice_detail …

Android 性能优化系列:启动优化进阶

文章目录 启动速度优化的本质因素CPU 层面进行速度优化减少程序的指令数降低时钟周期时间降低每条指令的平均时间周期 缓存层面进行速度优化缓存的读写速度缓存的命中率 任务调度层面进行速度优化通过实时进程和普通进程了解任务调度机制原理进程生命周期 CPU 优化合理使用线程…

day67_mybatisplus

今日内容 零、 复习昨日 零、 复习昨日 一、MybatisPlus快速入门 [MyBatis-Plus](简介 | MyBatis-Plus (baomidou.com))(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 官方…

InnoDB: Waiting for page_cleaner to finish flushing of buffer pool 解决方案

这个是因为linux系统时间,Mysql数据库时间,Mysql日志时间出现不一致导致的。 1、date -R 查询linux系统时间 中国标准时区东八区时区 2、mysql数据库的时间 3、在mysql的配置文件里面,定义好时间,时区一致。 问题解决。

前端Vue自定义商品评价页面单选多选标签tags组件单选多选按钮选择器picker组件

随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现…

群晖折腾记5—docker安装emby开启核显

硬解的前提条件 Emby为正版 带核显的白裙或者已经被正确驱动的黑裙 开心版本不在讨论范围之内 需要的目录有/config /mnt/share1 /mnt/share2,自己创建对应的目录即可 打开ssh sudo -i输入下面命令首先判断群晖是否有核显驱动,白裙使用有带核显cpu的可…

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题

由于一段时间没有使用Selenium,当再次使用时发现之前写的Selenium元素定位的代码运行之后会报错,发现是Selenium更新到新版本(4.x版本)后,以前的一些常用的代码的语法发生了改变,当然如果没有更新过或是下载…

VS2022 Fortran调用lapack 64位库

首先,可以在官网下载以下lib 下载64位的,然后就是添加文件所在的文件夹,以及添加lib,就可以直接使用lapack中的函数,但是现在Oneapi中集成了lapack库,所以可以直接调用,如下所示。 1. 首先&…

MongoDB 事务与数据落盘

文章目录 概要一、持久性1.1、journal log刷盘机制1.2、数据刷盘机制1.3、复制集下的写安全机制 二、隔离性总结 概要 MongoDB并不像MySQL一样天然支持多文档事务,其演变过程如下: MongoDB4.0之前只支持单文档事务,在单个文档上支持ACID原子…

S32K14x FlexCAN入门

每个系列S32K14x支持的邮箱个数。 基本每个系列的FlexCAN0可以支持32个报文缓存和支持CANFD。 中断源 mail 最多有32个mail • 灵活的消息缓冲区 (MB),总共 32 个消息缓冲区,数据长度为 8 字节 每个,可配置为 Rx 或 Tx 过滤掩码功能 强…

MyBatis中的缓存介绍与示例

目录 什么是缓存? 一级缓存 实例效果 二次缓存 示例效果 什么是缓存? 在用户访问相同数据时,需要对数据库多次访问,导致产生大量IO、读写硬盘的操作,效率低下,有了缓存首次访问时,查询到数…

【AI 绘图】Stable Diffusion WebUI 本地安装教程(Windows,兼容 NVIDIA、AMD 显卡)

文章目录 硬性要求Stable Diffusion 简介Stable Diffusion WebUI 简介1. 安装 Python 3.10.6(较新版本的 Python 不支持 torch)2. 安装 Git3. 下载 stable-diffusion-webui 存储库(此步二选一)3.1 NVIDIA GPU3.2 AMD GPU 4. webui…

Unity 3D 刚体初步

Unity 3D 中的 Rigidbody ,刚体,是用来模拟物理特性,模拟推力与扭力,实现现实世界中的物理学现象。 把在外力作用下,物体的形状和大小保持不变,而且内部各部分相对位置保持恒定(没有形变&#…

2.zabbxi操作和设置

文章目录 zabbxi操作和设置添加zabbix-agent客户端web端添加客户端 自定义监控模板(面试)监控模板下载地址案例1案例2 设置邮件报警自动注册和自动发现自动发现(对于agent是被动模式)自动注册(对于agent是主动模式&…

把同组人做的工作写在自己简历上,算造假吗?知道这个需求不是我做的人,这个世界可能不超过10个人!...

把同组人做的东西写在自己简历上,算造假吗? 一位网友问: 同组人做的需求,需求细节我完全可以讲得清楚。知道这个需求不是我做的人,全世界可能不超过10个人,我把这个需求写在自己简历上算简历造假吗&#xf…

go数据结构之slice与map

1. 切片 1. 切片结构定义 type slice struct {array unsafe.Pointerlen intcap int }array:引用的底层数组,动态数组,可以修改 如果多个切片的array指针指向同一个动态数组,则它们都可以对底层这个动态数组元素进行修改。 len:&#xf…

电商平台怎么搭建

越来越多商家致力于搭建并运营自己的私域电商平台,大家都清楚了解拥有自己电商平台的好处。有利于品牌的塑造与提升,提高品牌曝光度和认知度,提高客户黏性,降低渠道成本。 乔拓云平台模板式搭建电商平台,方法简单实用…

【Linux实验】I/O接口实验(Vmware虚拟机、S5P6818开发板)

这里写目录标题 一、实验目的二、实验内容三、实验设备四、实验步骤五、总结 一、实验目的 掌握S5P6818芯片的I/O口控制寄存器的配置。掌握实验掌握ARM芯片使用I/O口控制LED显示。熟练使用嵌入式交叉编译器。掌握Makefile文件书写。 二、实验内容 编写程序控制实验平台的发光…