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

DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕

共同探索软件研发!敬请关注【宝码香车】

csdngif标识

目录

  • DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)
    • 📚前言
    • 📚页面效果
    • 📚指令输入
      • 定义属性
        • 时间相关
        • 组件状态相关
        • 样式与布局相关
        • 其他
      • 定义事件
      • 其他
    • 📚think
      • 📘组件代码
    • 📚代码测试
    • 📚整理后主要代码
      • 📘定义组件 TimePicker.vue
      • 📘调用 TimePickerView.vue
    • 📚测试代码正常跑通,附其他基本代码
      • 📘编写路由 src\router\index.js
      • 📘编写展示入口 src\App.vue
    • 📚页面效果


📚📗📕📘📖🕮💡📝🗂️✍️🛠️💻🚀🎉🏗️🌐🖼️🔗📊👉🔖⚠️🌟🔐⬇️·正文开始⬇️·🎥😊🎓📩😺🌈🤝🤖📜📋🔍✅🧰❓📄📢📈 🙋0️⃣1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣🔟🆗*️⃣#️⃣

DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)

📚前言

在当今这个科技飞速发展的时代,人工智能(AI)无疑是最为耀眼的领域之一。从智能语音助手到自动驾驶汽车,从图像识别技术到自然语言处理,AI 正以前所未有的速度渗透到我们生活的方方面面,深刻地改变着我们的生活方式和工作模式。而在这波澜壮阔的 AI 浪潮中,DeepSeek 宛如一颗璀璨的新星,迅速崛起,吸引了全球的目光。

📚页面效果

DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)

📚指令输入

已经创建好了一个基于Vue3的组合式API的项目(Composition API),并能正常运行起来,请帮我用 Vue3的组合式API(Composition API) 生成一个 时间选择器(Time Picker) 的功能组件,所有代码都保存在components/TimePicker 下的文件夹中。功能组件的script标签中只有setup属性,使用普通 JavaScript 实现,不使用TypeScript。
功能要有,如下属性:

定义属性

时间相关
  1. value
    • 作用:绑定当前选择的时间值,支持双向绑定。
    • 类型:StringDate
    • 默认值:null
  2. defaultValue
    • 作用:设置时间选择器的默认时间。
    • 类型:StringDate
    • 默认值:当前时间
  3. format
    • 作用:指定时间的显示格式,如 HH:mm:ssHH:mm 等。
    • 类型:String
    • 默认值:HH:mm
  4. disabledHours
    • 作用:设置不可选择的小时列表。
    • 类型:Array<Number>
    • 默认值:[]
  5. disabledMinutes
    • 作用:设置不可选择的分钟列表。
    • 类型:Array<Number>
    • 默认值:[]
  6. disabledSeconds
    • 作用:设置不可选择的秒数列表。
    • 类型:Array<Number>
    • 默认值:[]
组件状态相关
  1. readonly
    • 作用:设置时间选择器是否为只读状态。
    • 类型:Boolean
    • 默认值:false
  2. disabled
    • 作用:设置时间选择器是否禁用。
    • 类型:Boolean
    • 默认值:false
  3. visible
    • 作用:控制时间选择面板的显示与隐藏,支持双向绑定。
    • 类型:Boolean
    • 默认值:false
样式与布局相关
  1. placement
    • 作用:设置时间选择面板的弹出位置,如 topbottomleftright 等。
    • 类型:String
    • 默认值:bottom
  2. size
    • 作用:设置时间选择器的尺寸,如 smallmediumlarge
    • 类型:String
    • 默认值:medium
其他
  1. showSeconds
    • 作用:设置是否显示秒数选择。
    • 类型:Boolean
    • 默认值:false

定义事件

  1. update:value
    • 作用:当选择的时间值发生变化时触发,用于实现双向绑定。
    • 参数:StringDate,新的时间值。
  2. update:visible
    • 作用:当时间选择面板的显示状态发生变化时触发,用于实现双向绑定。
    • 参数:Boolean,新的显示状态。
  3. change
    • 作用:当用户完成时间选择操作时触发。
    • 参数:StringDate,选择的时间值。
  4. open
    • 作用:当时间选择面板打开时触发。
  5. close
    • 作用:当时间选择面板关闭时触发。

其他

  1. 提供插槽:使用 Vue 的插槽机制,允许用户自定义时间选择器的输入框内容、时间选择面板的样式等,增加组件的灵活性。
  2. 键盘交互:支持通过键盘上下左右箭头键选择时间,以及使用回车键确认选择,提升用户操作体验。
  3. 国际化支持:支持不同语言的时间显示和提示信息,方便不同地区的用户使用。
  4. 动画效果:为时间选择面板的显示和隐藏添加淡入淡出等动画效果,增强用户体验。
  5. 样式定制:提供一些样式类名或 CSS 变量,方便用户自定义时间选择器的样式,如颜色、字体、边框等。
  6. 文档和示例:编写详细的文档,说明每个属性和事件的作用,并提供多种使用示例,方便其他开发者使用该组件。

你有更好的建议也可以添加,要注明。组件定义好后给出5个及以上的调用示例,示例中添加完整的数据和事件,确保每个示例是独立的。
下面是现有目录
DeepSeekAndVue/
├── src/ # 源代码目录
│ ├── assets/ # 静态资源
│ │ ├── base.css
│ │ ├── main.css
│ │ └── logo.svg
│ ├── components/ # 组件目录
│ │ ├── HelloWorld.vue
│ │ ├── TheWelcome.vue
│ │ ├── WelcomeItem.vue
│ │ ├── Progress/
│ │ │ └── Progress.vue
│ │ ├── Accordion/
│ │ ├── BackToTop/
│ │ ├── Card/
│ │ ├── InfiniteScroll/
│ │ ├── Notification/
│ │ ├── Timeline/
│ │ ├── Switch/
│ │ ├── Tabs/
│ │ ├── Sidebar/
│ │ ├── Breadcrumbs/
│ │ ├── MasonryLayout/
│ │ ├── Rating/
│ │ ├── ColorPicker/
│ │ ├── RightClickMenu/
│ │ ├── RangePicker/
│ │ ├── Navbar/
│ │ ├── FormValidation/
│ │ ├── CopyToClipboard/
│ │ ├── ClickAnimations/
│ │ ├── ThumbnailList/
│ │ ├── KeyboardShortcuts/
│ │ ├── CommentSystem/
│ │ ├── QRCode/
│ │ ├── RadioButton/
│ │ ├── Slider/
│ │ ├── ScrollAnimations/
│ │ ├── TextInput/
│ │ ├── Divider/
│ │ ├── Checkbox/
│ │ ├── TagInput/
│ │ ├── DropdownSelect/
│ │ ├── List/
│ │ ├── Header/
│ │ ├── Footer/
│ │ ├── Pagination/
│ │ ├── FloatingActionButton/
│ │ ├── PasswordInput/
│ │ ├── GridLayout/
│ │ ├── Flexbox/
│ │ ├── Modal/
│ │ ├── RichTextEditor/
│ │ ├── TimePicker/
│ │ ├── DatePicker/
│ │ └── icons/
│ ├── router/ # 路由配置
│ │ └── index.js
│ ├── stores/ # Pinia 状态管理
│ │ └── counter.js
│ ├── views/ # 页面组件
│ │ ├── ProgressView.vue
│ │ ├── TabsView.vue
│ │ ├── SwitchView.vue
│ │ ├── TimelineView.vue
│ │ ├── NotificationView.vue
│ │ ├── CardView.vue
│ │ ├── InfiniteScrollView.vue
│ │ ├── BackToTopView.vue
│ │ ├── AccordionView.vue
│ │ ├── SidebarView.vue
│ │ ├── BreadcrumbsView.vue
│ │ ├── MasonryLayoutView.vue
│ │ ├── RatingView.vue
│ │ ├── ColorPickerView.vue
│ │ ├── RightClickMenuView.vue
│ │ ├── RangePickerView.vue
│ │ ├── NavbarView.vue
│ │ ├── FormValidationView.vue
│ │ ├── CopyToClipboardView.vue
│ │ ├── ClickAnimationsView.vue
│ │ ├── ThumbnailListView.vue
│ │ ├── KeyboardShortcutsView.vue
│ │ ├── CommentSystemView.vue
│ │ ├── QRCodeView.vue
│ │ ├── RadioButtonView.vue
│ │ ├── SliderView.vue
│ │ ├── ScrollAnimationsView.vue
│ │ ├── TextInputView.vue
│ │ ├── DividerView.vue
│ │ ├── CheckboxView.vue
│ │ ├── TagInputView.vue
│ │ ├── DropdownSelectView.vue
│ │ ├── ListView.vue
│ │ ├── HeaderView.vue
│ │ ├── FooterView.vue
│ │ ├── PaginationView.vue
│ │ ├── FloatingActionButtonView.vue
│ │ ├── GridLayoutView.vue
│ │ ├── PasswordInputView.vue
│ │ ├── FlexboxView.vue
│ │ ├── ModalView.vue
│ │ ├── RichTextEditorView.vue
│ │ ├── TimePickerView.vue
│ │ ├── DatePickerView.vue
│ │ └── AboutView.vue
│ ├── App.vue # 根组件
│ └── main.js # 应用入口
├── public/ # 公共资源目录
├── index.html # HTML 模板
├── package.json # 项目配置
├── vite.config.js # Vite 配置
└── node_modules/ # 依赖包目录

📚think

📘组件代码

我将按照您的要求创建时间选择器组件。以下是组件的实现步骤:

  1. 首先在项目目录下创建组件文件:
components/TimePicker/TimePicker.vue
  1. 组件实现代码:
<!-- components/TimePicker/TimePicker.vue -->
<template><div class="deep-time-picker" :class="[sizeClass, placementClass]"><!-- 输入框插槽 --><div class="time-input-wrapper" @click="togglePicker"><slot name="trigger"><inputclass="time-input"type="text":value="displayTime":readonly="readonly":disabled="disabled":placeholder="placeholder"/></slot></div><!-- 时间选择面板 --><transition name="fade"><divv-if="visible && !disabled"class="time-panel":class="placement"@click.stop><div class="time-columns"><!-- 小时列 --><div class="time-column"><div class="column-header">{{ hourLabel }}</div><ul ref="hourList" class="column-list"><liv-for="h in hours":key="h.value":class="[{ active: h.value === currentHour, disabled: h.disabled }]"@click="selectHour(h.value)"@keydown="handleKeyDown($event, 'hour', h.value)":tabindex="h.disabled ? -1 : 0">{{ h.formatted }}</li></ul></div><!-- 分钟列 --><div class="time-column"><div class="column-header">{{ minuteLabel }}</div><ul ref="minuteList" class="column-list"><liv-for="m in minutes":key="m.value":class="[{ active: m.value === currentMinute, disabled: m.disabled }]"@click="selectMinute(m.value)"@keydown="handleKeyDown($event, 'minute', m.value)":tabindex="m.disabled ? -1 : 0">{{ m.formatted }}</li></ul></div><!-- 秒数列 --><div v-if="showSeconds" class="time-column"><div class="column-header">{{ secondLabel }}</div><ul ref="secondList" class="column-list"><liv-for="s in seconds":key="s.value":class="[{ active: s.value === currentSecond, disabled: s.disabled }]"@click="selectSecond(s.value)"@keydown="handleKeyDown($event, 'second', s.value)":tabindex="s.disabled ? -1 : 0">{{ s.formatted }}</li></ul></div></div><!-- 面板底部操作 --><div class="panel-footer"><slot name="footer"><button class="confirm-btn" @click="confirmSelection">{{ confirmText }}</button></slot></div></div></transition></div>
</template><script setup>
import { ref, computed, watch, toRefs, onMounted } from 'vue'
import dayjs from 'dayjs'const emit = defineEmits(['update:value','update:visible','change','open','close'
])const props = defineProps({value: { type: [String, Date], default: null },defaultValue: { type: [String, Date], default: () => new Date() },format: { type: String, default: 'HH:mm' },disabledHours: { type: Array, default: () => [] },disabledMinutes: { type: Array, default: () => [] },disabledSeconds: { type: Array, default: () => [] },readonly: { type: Boolean, default: false },disabled: { type: Boolean, default: false },visible: { type: Boolean, default: false },placement: { type: String, default: 'bottom' },size: { type: String, default: 'medium' },showSeconds: { type: Boolean, default: false }
})// 国际化默认配置
const i18n = {hour: 'Hour',minute: 'Minute',second: 'Second',confirm: 'OK'
}// 转换props为响应式引用
const { value, defaultValue, format,disabledHours,disabledMinutes,disabledSeconds,visible,showSeconds
} = toRefs(props)// 当前时间状态
const currentTime = ref(dayjs(value?.value || defaultValue?.value))
const currentHour = ref(currentTime.value.hour())
const currentMinute = ref(currentTime.value.minute())
const currentSecond = ref(currentTime.value.second())// DOM引用
const hourList = ref(null)
const minuteList = ref(null)
const secondList = ref(null)// 计算显示时间
const displayTime = computed(() => {return currentTime.value.format(format.value)
})// 尺寸类名
const sizeClass = computed(() => `size-${props.size}`)// 位置类名
const placementClass = computed(() => `placement-${props.placement}`)// 生成时间选项
const generateOptions = (type) => {const max = type === 'hour' ? 23 : 59const disabled = props[`disabled${type.charAt(0).toUpperCase() + type.slice(1)}s`]return Array.from({ length: max + 1 }, (_, i) => {const value = iconst formatted = i.toString().padStart(2, '0')return {value,formatted,disabled: disabled.includes(value)}})
}const hours = computed(() => generateOptions('hour'))
const minutes = computed(() => generateOptions('minute'))
const seconds = computed(() => generateOptions('second'))// 切换选择器可见状态
const togglePicker = () => {if (props.readonly || props.disabled) returnconst newVisible = !visible.valueemit('update:visible', newVisible)if (newVisible) emit('open')else emit(

相关文章:

DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)📚前言📚页面效果📚指令输入…...

基于 Ingress-Nginx 实现 mTLS 双向认证

目录 背景描述&#xff1a; TLS 和 MTLS 之间的差异 通过自签名证书启用双向 TLS 1. 生成证书 (1) 生成 CA&#xff08;根证书颁发机构&#xff09; (2) 生成 CA&#xff08;根证书颁发机构&#xff09; (3) 生成客户端证书 2. 在 Kubernetes 中配置 mTLS &#x…...

学到什么记什么(25.3.3)

Upload-labs 今日重新做了一下文件上传漏洞&#xff0c;这里第一题之前采用直接抓包改后缀名.jpg为.php&#xff0c;再写入一句话<?php phpinfo();?>然后放行&#xff0c;得到图片地址&#xff08;可复制&#xff09;&#xff0c;本来直接访问图片地址即可得到敏感信息…...

【子网掩码计算器:Python + Tkinter 实现】

子网掩码计算器&#xff1a;Python Tkinter 实现 引言代码功能概述代码实现思路1. 界面设计2. 功能实现3. 事件处理 子网掩码计算器实现步骤1. 导入必要的库2. 定义主窗口类 SubnetCalculatorApp3. 创建菜单栏4. 创建界面组件5. 判断 IP 地址类别6. 计算子网信息7. 其他功能函…...

《解锁HarmonyOS NEXT高阶玩法:艺术图像识别功能开发全攻略》

在当今数字化时代&#xff0c;AI技术不断拓展其应用边界&#xff0c;为各行业带来前所未有的变革。在艺术领域&#xff0c;AI图像识别技术能够帮助艺术从业者、爱好者快速识别艺术品风格、作者&#xff0c;甚至挖掘艺术品背后的历史文化信息。本文将结合HarmonyOS NEXT API 12及…...

Spring Boot的启动流程

Spring Boot 的启动流程是一个复杂且有序的过程&#xff1a; 创建SpringApplication实例 — 调用run方法 — 启动完成(发布应用启动事件&#xff0c;配置环境&#xff0c;创建ApplicationContext&#xff0c;准备ApplicationContext&#xff0c;刷新ApplicationContext[【创建B…...

【通俗讲解电子电路】——从零开始理解生活中的电路(三)

实际应用案例&#xff1a;生活中的电子电路 ——拆解你身边的“隐形工程师” 1. 手电筒电路&#xff1a;最简单的直流系统 电路组成 电源&#xff1a;2节1.5V电池&#xff08;串联3V&#xff09;。 开关&#xff1a;按钮控制回路通断。 LED&#xff1a;发光二极管&#xff…...

TypeScript系列01-类型系统全解析

本文总结了 TypeScript 的类型系统基础&#xff0c;涵盖了&#xff1a; TypeScript 的价值&#xff1a;静态类型检查为 JavaScript 添加了类型安全保障基本类型系统&#xff1a;从原始类型到特殊类型&#xff08;any、unknown、never&#xff09;的完整介绍类型注解与推断&…...

ragflow-mysql 启动失败案例分析

一、问题描述 1.拉取RAGflow镜像失败 dependency failed to start: container ragflow-mysql is unhealthy2. 查询日志 docker logs ragflow-mysql显示 出现[rootlocalhost docker]# docker logs ragflow-mysql Fatal glibc error: CPU does not support x86-64-v2 Fatal …...

SslConnection::SslConnection()详解

一、&#x1f50d; SslConnection::SslConnection() 详解 这个构造函数的主要作用是&#xff1a; 创建 SSL 对象创建 BIO&#xff08;I/O 缓冲区&#xff09;初始化 SSL 服务器模式绑定回调函数&#xff08;onRead() 处理接收数据&#xff09; &#x1f4cc; 1. 初始化 SSL 相…...

unity lua属性绑定刷新

我们现在有一个 角色属性类叫heroModel,内容如下,当heroModel中的等级发生变化的时候&#xff0c;我们需要刷新界面显示等级信息&#xff0c;通常我们是在收到等级升级成功的协议的时候&#xff0c;发送一个事件&#xff0c;UI界面接受到这个事件的时候&#xff0c;刷新一下等级…...

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks ​#paper/GFM/GNN-BASED#​ #paper/⭐⭐⭐#​ 注意&#xff1a;这篇文章是每个图一个GCN模型&#xff0c;而不是所有图一个GCN 模型 算是最早的涉及异配图的prompt了 贡献和动机&#xff1a; 非对…...

企业级-数据分类分级详细方案

一、方案背景 在数字化时代,数据成为企业和组织的核心资产。随着数据量的快速增长和数据应用场景的不断拓展,如何有效地管理和保护数据,确保数据的安全性、合规性和可用性,成为了亟待解决的问题。数据分类分级作为数据管理的基础工作,能够帮助企业清晰地了解自身的数据资…...

本地部署Qwen2.5-VL-7B-Instruct模型

本地部署Qwen2.5-VL-7B-Instruct模型 本地部署Permalink **创建环境** conda create -n qwenvl python3.11 -y# 报错&#xff1a; Solving environment: failedPackagesNotFoundError: The following packages are not available from current channels:# 处理&#xff1a; c…...

【前端】简单原生实例合集html,css,js

长期补充&#xff0c;建议关注收藏点赞。 目录 a标签设置不一样的花样&#xff08;图片但不用img)侧边固定box分栏input各种类型iframe表单拖拽 a标签设置不一样的花样&#xff08;图片但不用img) a标签里面不用嵌套img&#xff0c;直接设置为其bg-img即可 <!DOCTYPE html…...

【Spring】配置文件的使用

在Spring框架中&#xff0c;application.properties&#xff08;或application.yml&#xff09;文件用于配置Spring应用程序的各种属性。我们可以通过多种方式来使用这些配置&#xff0c;包括使用Value和ConfigurationProperties注解来绑定配置到Java对象。 下面是对不同配置类…...

MOM成功实施分享(七)电力电容制造MOM工艺分析与解决方案(第一部分)

声明&#xff1a;文章仅用于交流学习&#xff0c;不用于商业项目实施&#xff0c;图片来源于网络&#xff0c;如有侵犯权利&#xff0c;请联系作者及时删除。 本方案旨在对电力电容&#xff08;PEC和PQM型号&#xff09;制造工艺深度分析&#xff0c;结合管理要求设计MOM相关功…...

计算机毕业设计SpringBoot+Vue.js航空机票预定系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Python 爬取唐诗宋词三百首

你可以使用 requests 和 BeautifulSoup 来爬取《唐诗三百首》和《宋词三百首》的数据。以下是一个基本的 Python 爬虫示例&#xff0c;它从 中华诗词网 或类似的网站获取数据并保存为 JSON 文件。 import requests from bs4 import BeautifulSoup import json import time# 爬取…...

【二.提示词工程与实战应用篇】【3.Prompt调优:让AI更懂你的需求】

最近老张在朋友圈秀出用AI生成的国风水墨画,隔壁王姐用AI写了份惊艳全场的年终总结,就连楼下小卖部老板都在用AI生成营销文案。你看着自己跟AI对话时满屏的"我不太明白您的意思",是不是怀疑自己买了台假电脑?别慌,这可能是你的打开方式不对。今天咱们就聊聊这个…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...