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

媒体查询、事件绑定、对象拷贝等知识点总结

一、媒体查询CSS3 响应式设计1. 基本语法cssmedia 媒体类型 and (媒体特性) { /* CSS 规则 */ }2. 常用媒体类型值说明screen电脑屏幕、平板、手机等print打印机all所有设备默认3. 常用媒体特性特性说明max-width最大宽度≤ 该值min-width最小宽度≥ 该值orientation: portrait竖屏orientation: landscape横屏4. 正确使用方式css/* 方式一从小到大移动优先 */ body { background: white; } media (min-width: 768px) { body { background: pink; } } media (min-width: 1024px) { body { background: purple; } } /* 方式二从大到小桌面优先 */ body { background: purple; } media (max-width: 1023px) { body { background: pink; } } media (max-width: 767px) { body { background: white; } }5. 关键原则max-width表示“≤ 该宽度时生效”多个媒体查询同时满足时后定义的会覆盖前定义的。二、事件绑定DOM 事件处理1. 事件三要素要素说明示例事件源触发事件的元素btn事件类型触发条件click、mouseenter事件处理程序执行的操作function() {...}2. 事件绑定的三种方式方式一HTML 事件处理程序不推荐htmlbutton οnclickalert(点击)按钮/button方式二DOM 0 级事件处理程序javascriptbtn.onclick function() { ... }; // 解绑 btn.onclick null;特点简单但同一事件只能绑定一个处理程序方式三DOM 2 级事件处理程序标准推荐javascript// 绑定 btn.addEventListener(click, function() { ... }); // 解绑需传入相同函数 btn.removeEventListener(click, handler);特点可绑定多个处理程序更灵活3. 批量绑定与作用域问题javascript// ❌ 错误示例使用 var for (var i 0; i imgs.length; i) { imgs[i].onclick function() { console.log(i); // 始终输出 imgs.length } } // ✅ 正确示例 1使用 letES6 for (let i 0; i imgs.length; i) { imgs[i].onclick function() { console.log(i); // 正确输出 0,1,2... } } // ✅ 正确示例 2使用闭包ES5 兼容写法 for (var i 0; i imgs.length; i) { imgs[i].onclick (function(index) { return function() { console.log(index); } })(i); }4. 原理说明var函数作用域循环结束后变量值统一为最终值let块级作用域每次循环创建独立变量闭包通过立即执行函数创建独立作用域保存当前值三、对象的拷贝与访问1. 数据类型分类类型存储方式示例基本类型栈内存存值number、string、boolean、null、undefined、symbol引用类型栈内存存地址堆内存存值object、array、function2. 浅拷贝定义只拷贝对象的第一层属性对于引用类型属性只拷贝内存地址新旧对象共享该引用实现方式javascript// 方式一for...in 循环 for (let k in obj) { o[k] obj[k]; } // 方式二Object.assign() let o Object.assign({}, obj); // 方式三扩展运算符 let o { ...obj };特点javascriptlet obj { a: 1, b: { c: 2 } }; let o { ...obj }; o.b.c 3; console.log(obj.b.c); // 3被改变会联动3. 深拷贝定义递归拷贝所有层级新旧对象完全独立互不影响实现方式方式一递归函数你笔记中的方法javascriptfunction deepCopy(newObj, oldObj) { for (let k in oldObj) { let item oldObj[k]; if (item instanceof Array) { newObj[k] []; deepCopy(newObj[k], item); } else if (item instanceof Object) { newObj[k] {}; deepCopy(newObj[k], item); } else { newObj[k] item; } } }方式二JSON 方法简单场景javascriptlet o JSON.parse(JSON.stringify(obj));⚠️限制会忽略undefined、function、symbol不能处理循环引用4. 浅拷贝 vs 深拷贝对比表对比维度浅拷贝深拷贝拷贝层级仅第一层所有层级引用类型处理复制地址递归创建新对象与原数据关系嵌套数据会联动完全独立性能高较低适用场景对象结构简单对象结构复杂且需完全独立四、对象属性访问1. 两种访问方式方式语法特点点语法obj.property简洁但属性名必须为合法标识符且固定方括号语法obj[property]或obj[variable]灵活支持变量、表达式、特殊字符2. 必须使用方括号的场景javascript// 1. 属性名包含特殊字符 obj[first-name]; obj[user age]; // 2. 属性名是变量 let key name; obj[key]; // 3. 动态遍历属性 for (let k in obj) { obj[k]; // 必须用方括号 } // 4. 属性名是表达式 obj[a b];3. Object.keys() 和 Object.values()方法返回值示例Object.keys(obj)属性名组成的数组[name, age]Object.values(obj)属性值组成的数组[张三, 18]Object.entries(obj)键值对数组[[name,张三], [age,18]]javascript// 常用遍历模式 Object.keys(obj).forEach(key { console.log(key, obj[key]); });4. 点语法 vs 方括号记忆要点点语法属性名已知且符合命名规范时使用方括号属性名动态、含特殊字符或为变量时使用五、综合对比速查表知识点关键概念注意事项媒体查询max-width、min-width注意样式覆盖顺序事件绑定三要素、批量绑定循环中使用let或闭包解决作用域问题浅拷贝只拷贝第一层引用类型属性会联动深拷贝递归拷贝所有层JSON 方法有局限性属性访问点语法 vs 方括号动态属性名必须用方括号六、典型面试题1. 浅拷贝和深拷贝的区别浅拷贝只复制对象的第一层属性引用类型属性复制的是内存地址修改会影响原对象深拷贝递归复制所有层级新对象与原对象完全独立。2. for 循环中绑定事件为什么全部输出相同值如何解决因为var没有块级作用域循环结束后变量为最终值。解决方法使用let或闭包。3.obj.key和obj[key]有什么区别点语法后面必须跟固定的属性名字面量方括号内可以是变量、表达式支持特殊字符属性名更灵活。4. 如何判断数据类型以实现深拷贝使用instanceof判断Array和Object注意null和Array的typeof都返回object需特殊处理。

相关文章:

媒体查询、事件绑定、对象拷贝等知识点总结

一、媒体查询(CSS3 响应式设计)1. 基本语法cssmedia 媒体类型 and (媒体特性) {/* CSS 规则 */ }2. 常用媒体类型值说明screen电脑屏幕、平板、手机等print打印机all所有设备(默认)3. 常用媒体特性特性说明max-width最大宽度&…...

如何快速掌握MelonLoader:从零基础到精通Unity游戏模组加载的完整教程

如何快速掌握MelonLoader:从零基础到精通Unity游戏模组加载的完整教程 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader …...

Qwerty Learner单词难度分级:智能调整训练强度的终极指南

Qwerty Learner单词难度分级:智能调整训练强度的终极指南 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://…...

告别图形界面!用DM数据库的dlsql命令行工具,5分钟搞定日常数据库运维

命令行利器dlsql:DM数据库高效运维实战指南 在数据库运维的世界里,图形化界面固然直观,但真正的高手往往更青睐命令行工具带来的高效与灵活。DM数据库的dlsql命令行客户端,就是这样一把被许多DBA私藏的"瑞士军刀"。 1. …...

【Java 21记录模式性能优化终极指南】:3个被90%开发者忽略的模式匹配陷阱及提速300%的实战方案

第一章:Java 21记录模式性能优化全景概览Java 21 引入的记录模式(Record Patterns)不仅提升了模式匹配的表达力,更在JVM层面实现了多项关键性能优化。通过与模式匹配(Pattern Matching for instanceof)和解…...

期权到期日别慌!手把手教你搞定上交所股票期权的行权与交割(附避坑清单)

期权到期日实战指南:从行权准备到交割避坑全流程解析 手机屏幕上的红色倒计时提醒着期权合约即将到期,作为刚接触期权交易不久的新手,此刻最需要的不再是复杂的概念解释,而是一份能握在手中的应急操作清单。本文将用最直白的语言拆…...

7大维度测评:2023年开源付费墙绕过工具终极选择指南

7大维度测评:2023年开源付费墙绕过工具终极选择指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字内容访问需求日益增长的今天,选择一款高效可靠的开源…...

别再只用外部中断了!用STM32F103的TIM2输入捕获,实现更稳定的旋转编码器读数

旋转编码器信号捕获:STM32F103定时器输入捕获模式实战解析 旋转编码器作为工业控制和消费电子中的核心位置传感器,其信号处理的稳定性直接影响系统性能。许多开发者习惯采用外部中断方式读取AB相脉冲,但在高速旋转或存在机械抖动的场景下&…...

Android Studio中文界面终极配置指南:告别英文障碍,提升开发效率

Android Studio中文界面终极配置指南:告别英文障碍,提升开发效率 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePac…...

终极指南:用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤

终极指南:用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在为手中的旧款Mac无法…...

新手福音:借力卓晴式AI,在快马平台轻松完成你的首个网页项目

作为一个刚接触编程的新手,想要创建个人网页却不知从何下手是很常见的情况。最近我发现了一个特别适合新手的组合方案:用AI生成代码在线平台实时调试。下面记录我的完整实践过程,希望能帮到同样想入门的朋友。 明确需求清单 首先梳理出网页需…...

特朗普政府发布《国家人工智能立法框架》,多维度布局AI领域

【《国家人工智能立法框架》六大核心目标锚定AI发展方向】特朗普政府发布的《国家人工智能立法框架》,意在通过统一国家政策确保美国在AI领域的全球领先地位。该框架包含六大核心目标,分别是保护儿童与赋能家长、维护与强化美国社区、尊重知识产权与支持…...

MediaPipe人脸检测避坑指南:如何优化检测精度与性能(含模型选择建议)

MediaPipe人脸检测实战优化:从参数调优到模型部署的完整指南 人脸检测作为计算机视觉的基础任务,其性能直接影响后续的面部分析效果。MediaPipe提供的轻量级解决方案在移动端和边缘设备上表现出色,但实际应用中常遇到误检、漏检或性能瓶颈问题…...

Go AI 生态实战:从单机 RAG 到分布式智能服务架构演进

Go AI 生态实战:从单机 RAG 到分布式智能服务架构演进 摘要:本文面向具备后端与架构背景的技术人员,系统讲透 Go 在 AI 应用落地中的工程化方法。文章不再停留在“调用一个模型接口”的层面,而是从 RAG 原理、服务拆分、索引构建、高并发治理、缓存策略、容错机制、可观测性…...

苏州沃虎电子(VOOHU)10/100M集成式RJ45连接器SYT111B002BA2A1D产品介绍

苏州沃虎电子科技有限公司(品牌:VOOHU)供应的 SYT111B002BA2A1D 是一款高可靠性集成式RJ45连接器,专为10/100M以太网应用设计。该产品采用90侧插DIP封装,内置网络变压器,具备工业级宽温工作能力和优异的信号…...

[特殊字符] Nano-Banana效果分享:电动工具齿轮箱高精度啮合关系可视化拆解图

Nano-Banana效果分享:电动工具齿轮箱高精度啮合关系可视化拆解图 你有没有想过,一个复杂的电动工具内部到底长什么样?那些精密的齿轮是如何咬合在一起,将电机的旋转变成强大动力的?传统的产品说明书往往只有一张模糊的…...

AI写论文超厉害!4款AI论文生成工具,解决毕业论文写作难题!

还在为撰写期刊论文而烦恼吗?面对成堆的文献、复杂的格式要求以及无休止的修改,许多学术人员常常感到效率低下。这并不奇怪!不过,不必太担心,以下将推荐4款实测有效的AI论文写作工具,它们能帮助你在论文文献…...

用STM32和示波器搞定美的/格力空调红外遥控(附完整C代码)

STM32实战:从示波器捕获到空调红外协议逆向全解析 红外遥控技术看似简单,却蕴含着精妙的时序设计和协议逻辑。作为一名长期混迹于硬件开发领域的工程师,我经常遇到需要逆向控制家电的场景。最近在智能家居项目中,就遇到了需要通过…...

深入OpenHarmony NAPI引擎:从‘@ohos.hilog’导入到so库加载的底层链路剖析

深入OpenHarmony NAPI引擎:从‘ohos.hilog’导入到so库加载的底层链路剖析 当开发者在OpenHarmony应用中写下import hilog from ohos.hilog时,背后隐藏着一套精密的系统级协作机制。这条看似简单的语句,实际上触发了从JavaScript语法解析到原…...

CentOS部署PHP项目完整步骤

CentOS 7.9 部署 PHP 7.4 MySQL 5.7.44 完整步骤 由于 CentOS 7 已于 2024 年 6 月 30 日停止官方维护,原有的 yum 源已不可用,因此必须首先更换为阿里云镜像源才能正常安装软件。 一、系统环境准备 1.1 更换阿里云 YUM 源 # 1. 备份原有源 mv /etc/yum…...

智能表格在敏捷项目管理中的工时统计实践

1. 为什么敏捷团队需要智能工时统计 在敏捷开发中,两周一次的迭代就像一场短跑比赛。我见过太多团队在冲刺过半时才发现工时严重超支,这时候再调整已经来不及了。传统Excel表格需要手动更新公式,光是合并不同成员的工作量报表就能消耗半天时间…...

springboot+vue基于web的美食外卖点餐平台的设外卖员商家

目录同行可拿货,招校园代理 ,本人源头供货商外卖员功能分析商家功能分析技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 外卖员功能分析 外卖员在美食外卖点餐平台中的核心…...

认知内耗:在亚马逊,为何品牌名内部的“关键词”正在相互厮杀

在亚马逊的品牌丛林中,最隐蔽的悲剧莫过于:你精心构思的品牌名,其内部的各个组成部分(如“欧文斯”、“康宁”、“玻璃纤维”),并未协同指向你,反而各自激活了消费者心智中其他更强大品牌的“认…...

RTX3070 + CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决)

RTX3070 CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决) 当你手握一块RTX3070显卡,想要复现PointNet这一经典点云处理网络时,是否曾被环境配置的各种坑绊住脚步?本文将带你避开…...

OpenCV实战:3种图像降噪滤波器的Python代码对比(附效果图)

OpenCV实战:3种图像降噪滤波器的Python代码对比(附效果图) 在数字图像处理中,噪声是影响图像质量的主要因素之一。无论是来自传感器的不完美,还是传输过程中的干扰,噪声都会降低图像的清晰度和可用性。对于…...

保姆级教程:在RK3588上交叉编译Qt 5.15.15(含完整配置流程)

保姆级教程:在RK3588上交叉编译Qt 5.15.15(含完整配置流程) 在嵌入式开发领域,RK3588作为一款高性能的ARM处理器,正逐渐成为智能终端设备的首选平台。而Qt框架凭借其跨平台特性和丰富的GUI组件,为嵌入式界面…...

如何通过WeChatMsg实现微信聊天记录永久保存:从数据安全到情感记忆的完整解决方案

如何通过WeChatMsg实现微信聊天记录永久保存:从数据安全到情感记忆的完整解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.co…...

UnityLockstep:构建零延迟多人游戏的终极同步框架

UnityLockstep:构建零延迟多人游戏的终极同步框架 【免费下载链接】UnityLockstep Deterministic Lockstep with clientside prediction and rollback 项目地址: https://gitcode.com/gh_mirrors/un/UnityLockstep 在多人游戏开发中,你是否曾为网…...

GHelper:华硕笔记本的轻量级性能管理解决方案

GHelper:华硕笔记本的轻量级性能管理解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and …...

Windows系统优化神器:Winhance中文版全面使用指南

Windows系统优化神器:Winhance中文版全面使用指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...