JavaScript(JS进阶)

目录

00闭包

01函数进阶

02解构赋值

03通过forEach方法遍历数组

04深入对象

05内置构造函数

06原型


00闭包
<!-- 闭包 --><html><body><script>// 定义:闭包=内层函数(匿名函数)+外层函数的变量(s)// 作用:封闭数据,提供操作,外部可以访问函数内部变量function fun() {let s = 'Hello World'return function () {document.write(s)}}let f = fun()f()</script>
</body></html>
01函数进阶

1>函数参数

        1.动态参数

                arguments是函数内置的伪数组,包含传入的所有实参(函数声明时形参列表为空)

        2.剩余参数

                将不定数量的剩余参数表示为数组

                形参列表形如(形参列表 , ...剩余参数数组名)

        3.展开运算符(...)

<!-- 展开运算符 --><html><body><script>let arr = [1, 2, 3]console.log(...arr) // 1 2 3// 不改变原数组</script>
</body></html>

2>箭头函数

        1.基本语法:

                function(){} 等效于 () => {}

                只有一个形参,小括号可省略

                只有一行函数体,大括号可省略

        2.箭头函数参数:

                无动态参数,有剩余参数

02解构赋值
<!-- 数组解构 --><html><body><script>// 定义:将数组各值快速批量赋值给一系列变量let arr = [1, 2, 3]let [a, b, c] = arrconsole.log(a) // 1console.log(b) // 2console.log(c) // 3</script>
</body></html>
<!-- 对象解构 --><html><body><script>// 定义:将对象属性和方法快速批量赋值给一系列变量// 注意:新变量名和对应的属性名要相同let obj = { myname: 'Tian', age: 20 }let { myname, age } = objconsole.log(myname) // Tianconsole.log(age) // 20</script>
</body></html>
03通过forEach方法遍历数组
<!-- 通过forEach方法遍历数组 --><html><body><script>let arr = ['one', 'two', 'three']arr.forEach(function (item, index) {console.log(item) // 数组元素console.log(index) //索引号})// one// 0// two// 1// three// 2</script>
</body></html>
04深入对象

1>构造函数

<!-- 构造函数 --><html><body><script>function Std(uname, age) { // 约定:函数名首字母大写this.uname = unamethis.age = age}console.log(new Std('罗哲秀', 20))console.log(new Std('雷淇', 19))</script>
</body></html>

 2>实例成员&静态成员

        实例成员:实例对象的属性和方法(实例属性和实例方法)

        静态成员:构造函数的属性和方法(静态属性和静态方法)

05内置构造函数

1>Object常用静态方法

        Object.keys(obj)【返回对象obj的键(数组)】

        Object.values(obj)【返回对象obj的值(数组)】

        Object.assign(obj1,obj2)【obj2拷贝给obj1,追加不覆盖】

2>Array常用方法

<!-- reduce方法 --><html><body><script>let arr = [1, 2, 3]// reduce的参数为回调函数和初始值let ans1 = arr.reduce((pre, cur) => pre + cur) // 箭头函数为回调函数console.log(ans1) // 6let ans2 = arr.reduce((pre, cur) => pre + cur, 60) // 60为初始值console.log(ans2) // 66</script>
</body></html>
<!-- find方法 --><html><body><script>// 以对象数组为例--------------------let arr1 = [{ uname: '罗哲秀', age: 20 }, { uname: '雷淇', age: 19 }]console.log(arr1.find(array => array.age === 19))// 以字符串数组为例--------------------let arr2 = ['罗哲秀', '雷淇']console.log(arr2.find(uname => uname === '雷淇'))// 箭头函数 uname => uname === '雷淇'// 等价于// function myfind(uname) {return uname === '雷淇'}</script>
</body></html>
<!-- every和some方法 --><html><body><script>let arr = [{ uname: '罗哲秀', age: 20 }, { uname: '雷淇', age: 19 }]// every方法--------------------// 全部的元素符合条件let flag = arr.every(array => array.age >= 18)console.log(flag) // true// some方法--------------------// 存在符合条件的元素flag = arr.some(array => array.age >= 20)console.log(flag) // true</script>
</body></html>

3>String常用属性和方法

        实例属性:length

        实例方法:

                1.split(分隔符)【将字符串分割为数组】

                2.substring(indexStart[, indexEnd])【截取字符串,不包括indexEnd】

                3.startsWith(Str[, pos]【检测字符串是否以Str开头,从pos开始检测,不写默认为0】

                4.includes(Str[, pos])【检测字符串是否含有Str,从pos开始检测,不写默认为0】

06原型
<!-- 利用原型对象实现方法共享 --><html><body><script>// 构造函数function Stu(uname, age) {this.uname = unamethis.age = age}// 通过原型prototype,向构造函数添加方法共享Stu.prototype.say = function () {console.log(`我叫${this.uname},今年${this.age}岁`);};//实例化,并调用共享函数 let LQ = new Stu('雷淇', 19)let QQ = new Stu('清浅', 20)LQ.say()QQ.say()</script>
</body></html>
<!-- 原型继承 --><html><body><script>// 父亲"人"function people() {this.hair_color = '黑'this.leg_number = '两'this.say = function () {console.log(`我有${this.hair_color}色的头发和${this.leg_number}条腿`)}}// 孩子"LQ"function LQ() {this.dance = () => console.log('跳舞')}LQ.prototype = new peoplelet lq = new LQ// 孩子"QQ"function QQ() {this.sing = () => console.log('唱歌')}QQ.prototype = new peoplelet qq = new QQ// 调用共享方法和私有方法,验证原型继承lq.say() // 我有黑色的头发和两条腿lq.dance() // 跳舞qq.say() // 我有黑色的头发和两条腿qq.sing() // 唱歌</script>
</body></html>

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

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

相关文章

6.1es新特性解构赋值

解构赋值是 ES6&#xff08;ECMAScript 2015&#xff09;引入的语法&#xff0c;通过模式匹配从数组或对象中提取值并赋值给变量。&#xff1a; 功能实现 数组解构&#xff1a;按位置匹配值&#xff0c;如 let [a, b] [1, 2]。对象解构&#xff1a;按属性名匹配值&#xff0c;…

SpringBoot美容院管理系统设计与实现

基于SpringBoot的美容院管理系统免费源码&#xff0c;帮助您快速搭建高效、智能的美容院管理平台。该系统涵盖了管理员、技师、前台、普通用户及会员五大功能模块&#xff0c;以下是系统的核心功能与部署方式详细介绍。 ​功能模块 ​管理员功能 ​美容部位管理&#xff1a;支…

记一次某网络安全比赛三阶段webserver应急响应解题过程

0X01 任务说明 0X02 靶机介绍 Webserver&#xff08;Web服务器&#xff09;是一种软件或硬件设备&#xff0c;用于接收、处理并响应来自客户端&#xff08;如浏览器&#xff09;的HTTP请求&#xff0c;提供网页、图片、视频等静态或动态内容&#xff0c;是互联网基础设施的核心…

ChatGPT 4:引领 AI 创作新时代

文章目录 前言一、ChatGPT 4 的技术革新二、AI 文案创作&#xff1a;精准生成与个性化定制三、AI 绘画艺术&#xff1a;从文字到图像的神奇转化四、AI 视频制作&#xff1a;自动化剪辑与创意实现五、知识库与 ChatGPT 4 的深度融合六、全新的变革和机遇七、相关书籍推荐《ChatG…

HTTP请求-请求行

请求行&#xff08;方法&#xff0c;URL&#xff0c;版本号&#xff09; 方法&#xff1a; 描述了这次请求的目的。 常见方法&#xff1a; GET&#xff1a;从服务器拿一个东西过来&#xff08;读操作&#xff09; POST&#xff1a;往服务器放一个东西去&#xff08;写操作…

OSPF不规则区域和LSA

OSPF不规则区域 1.远离骨干的非骨干区域 R1-R4四台路由器能够正常学习到彼此路由&#xff0c;但是R5不行&#xff0c;因为R5是非法ABR 解决方法&#xff1a; 1使用Tunnel隧道将AR4连接到骨干区域 &#xff08;1&#xff09; 使用隧道解决不规则区域的问题 a.可能造成选路不…

【VS Code】开发C++跳转配置

C配置c_cpp_properties.json {"env": {"myIncludePath": ["${workspaceFolder}/src/include","${workspaceFolder}/src","${workspaceFolder}","/home/xxx/include/"],"myDefines": ["RELEASE&qu…

Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)

Spring AI应用&#xff1a;利用DeepSeek嵌入模型Milvus向量数据库实现检索增强生成–RAG应用&#xff08;超详细&#xff09; 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的快速发展为各行业带来了前所未有的机遇。其中&#xff0c;检索增强生成&…

Spring 的 IoC 和 DI 详解:从零开始理解与实践

Spring 的 IoC和 DI 详解&#xff1a;从零开始理解与实践 一、IoC&#xff08;控制反转&#xff09; 1、什么是 IoC&#xff1f; IoC 是一种设计思想&#xff0c;它的核心是将对象的创建和管理权从开发者手中转移到外部容器&#xff08;如 Spring 容器&#xff09;。通过这种…

JVM基础架构:内存模型×Class文件结构×核心原理剖析

&#x1f680;前言 “为什么你的Java程序总在半夜OOM崩溃&#xff1f;为什么某些代码性能突然下降&#xff1f;一切问题的答案都在JVM里&#xff01; 作为Java开发者&#xff0c;如果你&#xff1a; 对OutOfMemoryError束手无策看不懂GC日志里的神秘数字好奇.class文件如何变…

.DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具

&#x1f409;工具介绍 一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。 &#x1f3af;使用 本工具使用Python3 PyQt5开发&#xff0c;在开始使用前&#xff0c;请确保已经安装了相关模块&#xff1a; pip3 install -r requirements.txt -i ht…

为何在 FastAPI 中需要允许跨域访问(CORS)?(Grok3 回答)

prompt: 你是一个文笔流畅、专业性极强的技术博客博主&#xff0c;你将结合具体的例子和实际代码解释写一篇为何后端选择fastapi框架时&#xff0c;需要允许跨域访问。 为何在 FastAPI 中需要允许跨域访问&#xff08;CORS&#xff09;&#xff1f; 在现代 Web 开发中&#xf…

JDK8前后日期(计算两个日期时间差-高考倒计时)

JDK8之前日期、时间 Date SimpleDateFormat Calender JDK8开始日期、时间 LocalDate/LocalTime/LocalDateTime ZoneId/ZoneDateTIme Instant-时间毫秒值 DateTimeFormatter Duration/Period

Gerapy二次开发:用户管理专栏主页面开发

用户管理专栏主页面开发 写在前面用户权限控制用户列表接口设计主页面开发前端account/Index.vuelangs/zh.jsstore.js后端Paginator概述基本用法代码示例属性与方法urls.pyviews.py运行效果总结欢迎加入Gerapy二次开发教程专栏! 本专栏专为新手开发者精心策划了一系列内容,旨…

关于Spring MVC中传递数组参数的详细说明,包括如何通过逗号分隔的字符串自动转换为数组,以及具体的代码示例和总结表格

以下是关于Spring MVC中传递数组参数的详细说明&#xff0c;包括如何通过逗号分隔的字符串自动转换为数组&#xff0c;以及具体的代码示例和总结表格&#xff1a; 1. 核心机制 Spring MVC支持直接通过逗号分隔的字符串将请求参数自动转换为数组&#xff08;String[]、int[]等&…

大模型学习七:‌小米8闲置,直接安装ubuntu,并安装VNC远程连接手机,使劲造

一、说明 对于咱们技术人来说&#xff0c;就没有闲的蛋疼的时候&#xff0c;那不是现在机会来了 二、刷机器准备 1、申请解锁手机 申请解锁小米手机https://www.miui.com/unlock/download.html 下载工具&#xff0c;安装下面的步骤来&#xff0c;官网不欺人吧 打开开发者工…

repo安装配置

1.安装属性 以下配置方式二选一进行安装 1.1全局级别配置 1. 安装 repo 工具 在终端中输入以下命令以下载 repo 工具&#xff1a; curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo chmod ax /usr/bin/repo 1.2用户级别配置 1. 安装 r…

Go 语言数据类型

Go 语言数据类型 概述 Go 语言(也称为 Golang)是一种静态强类型、编译型、并发型、具有垃圾回收功能的编程语言。自2009年发布以来,Go 语言因其简洁的语法、高效的执行速度和强大的并发处理能力而广受欢迎。本文将详细介绍 Go 语言中的数据类型,帮助读者更好地理解和掌握…

C# 看门狗策略实现

using System; using System.Threading;public class Watchdog {private Timer _timer;private volatile bool _isTaskAlive;private readonly object _lock new object();private const int CheckInterval 5000; // 5秒检测一次private const int TimeoutThreshold 10000; …

Font Awesome Web 应用图标

1. 什么是 Font Awesome Web 应用图标 Font Awesome Web 应用图标是 Font Awesome 图标库中与 Web 开发相关的子集&#xff0c;适用于界面设计、用户交互和功能标识。 定义与作用 定义&#xff1a;这些图标包括导航&#xff08;如“主页”&#xff09;、操作&#xff08;如“…