前端学习笔记-JS进阶篇-02

news2024/9/29 19:35:23

构造函数&数据常用函数

1、深入对象

1.1、创建对象三种方式

1. 利用对象字面量创建对象

2. 利用new Object 创建对象

3. 利用构造函数创建对象


1.2、构造函数

构造函数:是一种特殊的函数,主要用来初始化对象

使用场景:常规的{...} 语法允许创建一个对象。比如我们创建了佩奇的对象,继续创建乔治的对象还需要重新写一 遍,此时可以通过构造函数快速创建多个类似的对象

构造函数在技术上是常规函数。

不过有两个约定:

  • 1. 它们的命名以大写字母开头。
  • 2. 它们只能由"new" 操作符来执行。 

构造函数语法:大写字母开头的函数

说明:

1. 使用new关键字调用函数的行为被称为实例化

2. 实例化构造函数时没有参数时可以省略()

3. 构造函数内部无需写return,返回值即为新创建的对象

4. 构造函数内部的return返回的值无效,所以不要写return

5. new Object() new Date()也是实例化构造函数

构造函数内部需要写return吗,返回值是什么?

  • 不需要
  • 构造函数自动返回创建的新的对象

实例化执行过程 

1. 创建新对象

2. 构造函数this指向新对象

3. 执行构造函数代码,修改this,添加新的属性

4. 返回新对象


1.3、实例成员&静态成员

实例成员: 通过构造函数创建的对象称为实例对象实例对象中的属性和方法称为实例成员

说明:

1. 实例对象的属性和方法即为实例成员

2. 为构造函数传入参数,动态创建结构相同但值不同的对象

3. 构造函数创建的实例对象彼此独立互不影响

 

静态成员构造函数属性和方法被称为静态成员

说明:

1. 构造函数的属性和方法被称为静态成员

2. 一般公共特征的属性或方法静态成员设置为静态成员

3. 静态成员方法中的this 指向构造函数本身 


2、内置构造函数

在JavaScript 中最主要的数据类型有6种:

基本数据类型: 字符串、数值、布尔、undefined、null

引用类型: 对象

js 底层完成,把简单数据类型包装为了引用数据类型

其实字符串、数值、布尔、等基本类型也都有专门的构造函数,这些我们称为包装类型。

JS中几乎所有的数据都可以基于构成函数创建

引用类型:Object,Array,RegExp,Date 等

包装类型: String,Number,Boolean 等

2.1、Object静态方法

内置的构造函数,用于创建普通对象

推荐使用字面量方式声明对象,而不是Object 构造函数

静态方法就是只有构造函数Object可以调用的

2.1.1、Object.keys

作用:Object.keys静态方法获取对象中所有属性(键)

语法:

注意:返回的是一个数组。【不可以写o.keys,因为o是实例化对象,它没有这个方法】

2.1.2、Object.values

作用:Object.values 静态方法获取对象中所有属性值

语法:

注意:返回的是一个数组

2.1.3、Object. assign

作用:Object. assign 静态方法常用于对象拷贝

使用:经常使用的场景给对象添加属性

语法:


2.2、Array

Array 是内置的构造函数,用于创建数组

创建数组建议使用字面量创建,不用Array构造函数创建 

2.2.1、数组常见实例方法-核心方法

 

reduce

作用:reduce 返回函数累计处理的结果,经常用于求和

基本语法:

参数: 起始值可以省略,如果写就作为第一次累计的起始值

累计值参数:

1. 如果有起始值,则以起始值为准开始累计,累计值 = 起始值

2. 如果没有起始值,则累计值以数组的第一个数组元素作为起始值开始累计

3. 后面每次遍历就会用后面的数组元素累计到累计值里面(类似求和里面的sum )

 2.2.2、数组常见方法-其他方法

5.实例方法 join 数组元素拼接为字符串,返回字符串(重点)和split刚好相反
6.实例方法 find 查找元素,返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined(重点)

7.实例方法 every 检测数组所有元素是否都符合指定条件,如果所有元素都通过检测返回 true,否则返回 false(重点)

8.实例方法 some 检测数组中的元素是否满足指定条件 如果数组中有元素满足条件返回 true,否则返回 false
9.实例方法 concat 合并两个数组,返回生成新数组
10.实例方法 sort对原数组单元值排序
11.实例方法 splice 删除或替换原数组单元
12.实例方法 reverse 反转数组A
13.实例方法 findIndex 查找元素的索引值

const arr = [
      {
        name: '小米',
        price: 1999
      },
      {
        name: '华为',
        price: 3999
      },
    ]
    // 找小米 这个对象,并且返回这个对象
    // const mi = arr.find(function (item) {
    //   // console.log(item)  //
    //   // console.log(item.name)  //
    //   console.log(111)
    //   return item.name === '华为'
    // })
    // 1. find 查找
    // const mi = arr.find(item => item.name === '小米')
    // console.log(mi)
    // 2. every 每一个是否都符合条件,如果都符合返回 true ,否则返回false
    const arr1 = [10, 20, 30]
    const flag = arr1.every(item => item >= 20)
    console.log(flag)

 案例:

 2. 数组常见方法-伪数组转换为真数组

静态方法Array.from()


2.3、String

在JavaScript 中的字符串、数值、布尔具有对象的使用特征,如具有属性和方法

之所以具有对象特征的原因是字符串、数值、布尔类型数据是JavaScript底层使用Object构造函数“包装”来的,被 称为包装类型。 

1.实例属性 length 用来获取字符串的度长(重点)
2.实例方法 split('分隔符')用来将字符串拆分成数组(重点)和join刚好相反


3.实例方法 substring(需要截取的第一个字符的索引[,结束的索引号]) 用于字符串截取(重点)

4.实例方法 startswith(检测字符串[,检测位置索引号])检测是否以某字符开头(重点)


5.实例方法 includes(搜索的字符串[,检测位置索引号])判断一个字符串是否包含在另一个字符串中,根据情况返口true 或 false(重点)


6.实例方法 toUpperCase 用于将字母转换成大写
7.实例方法 toLowerCase 用于将就转换成小写
8.实例方法 indexOf 检测是否包含某字符
9.实例方法 endsWith 检测是否以某字符结尾
10.实例方法 replace 用于替换字符串,支持正则匹配
11.实例方法 match 用于查找字符串,支持正则匹配

案例:

练习 • 显示赠品练习

请将下面字符串渲染到准备好的p标签内部,结构必须如左下图所示,展示效果如右图所示

<body>
  <div></div>
  <script>
    const gift = '50g的茶叶,清洗球'
    // 1. 把字符串拆分为数组
    // console.log(gift.split(',')) [,]
    // 2. 根据数组元素的个数,生成 对应 span标签
    // const str = gift.split(',').map(function (item) {
    //   return `<span>【赠品】 ${item}</span> <br>`
    // }).join('')

    // // console.log(str)
    // document.querySelector('div').innerHTML = str
    document.querySelector('div').innerHTML = gift.split(',').map(item => `<span>【赠品】 ${item}</span> <br>`).join('')
  </script>
</body>


2.4、Number

Number 是内置的构造函数,用于创建数值

常用方法: toFixed() 设置保留小数位的长度

JS进阶-day2-173-综合案例-购物车案例渲染数据_哔哩哔哩_bilibili


 

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

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

相关文章

MES系统实现制造业生产自动化、智能化与透明化

万界星空科技MES系统通过集成硬件和软件&#xff0c;实现对生产过程的实时监控、数据采集、任务调度、资源分配、质量控制、文档管理等功能&#xff0c;旨在优化企业的生产流程&#xff0c;提高生产效率&#xff0c;降低成本&#xff0c;并确保产品质量。涵盖了离散制造、流程制…

RK3588主板PCB设计学习

DCDC电路可以直接参考数据手册&#xff1a; 电源输出3A&#xff0c;回流GND也应该是3A&#xff0c;回流路径和输出路径的电流是一致的&#xff0c;不要输出路径布线很粗&#xff0c;GND回流路径很细&#xff0c;并且应该保证回流面积最小&#xff1a; 这一点讲的很到位&#xf…

一款基于 RBAC 的 Net8 后台管理框架,权限管理,前后台分离,支持多站点单点登录(附源码)

前言 在当今快速发展的互联网时代&#xff0c;一款强大的后台管理系统对于提升工作效率、简化cao作流程具有重要意义。然而&#xff0c;在众多开源项目中&#xff0c;大部分是以Java语言编写的&#xff0c;这对于专注于.NET平台的开发者来说&#xff0c;存在一定的使用门槛。 …

云+AI时代下,Alibaba Cloud Linux 如何进一步演进?

编者按&#xff1a;云AI 浪潮势不可挡&#xff0c;服务器操作系统如何进一步演进&#xff1f;阿里云智能集团高级技术专家张金利在 2024 云栖大会操作系统开源专场上&#xff0c;分享了《Alibaba Cloud Linux 技术路线演进思考》。内容见下&#xff1a; &#xff08;图/张金利&…

MacOS安装MindSpore(2024年最新)

大家好&#xff0c;我是邵奈一&#xff0c;一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为&#xff1a;被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年&#xff0c;我整理了很多IT技术相关的教程给大家&#xff0…

项目管理系统中的风险管理:如何识别和应对项目风险?

在现代项目管理中&#xff0c;风险管理是确保项目成功的关键因素之一。无论是技术、资源还是市场的变化&#xff0c;风险无处不在。有效的风险管理能够帮助团队识别潜在问题并制定应对策略&#xff0c;从而避免项目延误和预算超支。项目管理系统在这一过程中扮演着重要角色&…

从 TCP Reno 经 BIC 到 CUBIC

重读 TCP拥塞控制算法-从BIC到CUBIC 以及 cubic 的 tcp friendliness 与拐点控制 这两篇文章&#xff0c;感觉还是啰嗦了&#xff0c;今日重新一气呵成这个话题。 reno 线性逼近管道容量 Wmax&#xff0c;相当于一次查询(capacity-seeking)&#xff0c;但长肥管道从 0.5*Wmax …

试填+组合数学,CF 1648C - Tyler and Strings

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1648C - Tyler and Strings 二、解题报告 1、思路分析 考虑枚举相同前缀…

MySQL约束:外键约束

下面先创建两张表用来作为实验样例 1.创建dept表 create table dept(id int auto_increment comment ID primary key,name varchar(50) not null comment 部门名称 ) comment 部门表;INSERT INTO dept (id, name) VALUES (1, 研发部), (2, 市场部), (3, 财务部), (4, 销售部…

【C语言软开面经】

C语言软开面经 malloc calloc realloc free动态分配内存malloccalloc函数&#xff1a;realloc 函数&#xff1a;free函数&#xff1a; 堆栈-内存分区栈区&#xff08;Stack&#xff09;&#xff1a;堆区&#xff08;Heap&#xff09;&#xff1a;全局&#xff08;静态&#xff…

哪个待办事项提醒软件推荐?待办事项提醒软件哪个合适?

在快节奏的现代生活中&#xff0c;我们每个人每天都会被各种待办事项所包围。从工作计划到个人生活&#xff0c;从学习任务到家庭琐事&#xff0c;这些事项往往繁杂且紧急&#xff0c;稍不留神就可能错过重要的截止日期。因此&#xff0c;选择一款合适的待办事项提醒软件&#…

Docker-2.如何保存数据退出

在使用Docker时&#xff0c;我们常常需要修改容器中的文件&#xff0c;并且希望在容器重启后这些修改能够得到保留。 0.简介 使用Docker时有一个需要注意的问题&#xff1a;当你修改了容器中的文件后&#xff0c;重启容器后这些修改将会被重置&#xff0c;深入研究这个问题。 …

如何高效运营知识产权,实现企业价值最大化?

知识产权的运营管理是指企业对其所拥有的专利、商标、著作权等知识产权进行规划、运用、保护和管理的一系列活动。这些活动旨在最大化知识产权的价值&#xff0c;促进企业的技术创新和市场竞争力的提升。通过有效的知识产权运营管理&#xff0c;企业可以实现技术成果的快速转化…

猝发传输和非猝发传输

猝发传输和非猝发传输是两种不同的数据传输方式&#xff0c;主要区别在于数据传输的连续性以及数据包的发送方式。 猝发传输 (Burst Transmission): 定义: 猝发传输是指在一段时间内&#xff0c;大量数据包集中发送&#xff0c;然后在一段时间内没有数据传输&#xff0c;这种…

全流程SWAP农业模型数据制备、敏感性分析及气候变化影响技术应用

SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型&#xff0c;它综合考虑了土壤-水分-大气以及植被间的相互作用&#xff1b;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程&#xff0c;使其能够精确的模拟土壤中水分的运动&#xff0c;而且耦合了W…

HAL+M4学习记录_1

一、简介 基于Arm Cortex-M4的STM32F4 MCU系列采用了意法半导体的NVM工艺和ART Accelerator™&#xff0c;在高达180 MHz的工作频率下通过闪存执行时其处理性能达到225 DMIPS/608 CoreMark&#xff0c;这是迄今所有基于Cortex-M内核的微控制器产品所达到的最高基准测试分数。 这…

奖金高达 110 万元,Spatial Joy 2024 全球 AR 应用开发大赛启动

今年是AR应用开发大赛第三届&#xff0c;恰逢Rokid成立十周年&#xff0c;我们推出全新的大赛品牌“Spatial Joy”&#xff0c;引领开发者享受开发乐趣&#xff0c;为其打造充满挑战和惊喜的开发之旅&#xff0c;逐渐成为空间计算时代全球最大AR应用开发大赛。回顾大赛发展&…

MWORKS.Sysplorer 2024b重磅推出同元基础库

一、引言 MWORKS.Sysplorer 是多领域建模与仿真平台&#xff0c;集成了Modelica标准库。该库由Modelica协会开发&#xff0c;是一款开源的通用基础模型库&#xff0c;支持机电、流体、控制等多个专业领域的建模与仿真。随着Modelica标准库的不断发展与更新&#xff0c;目前最新…

自建RustDesk服务器:详细步骤与操作指南

在远程办公和协作日益普及的今天&#xff0c;远程桌面软件成为了不可或缺的工具。然而&#xff0c;许多知名的远程桌面软件&#xff0c;在免费使用一段时间后&#xff0c;会通过限制连接数量、时长或在特定网络环境下的可用性来促使用户付费升级&#xff0c;而且其会员非常昂贵…

第L4周:机器学习|K-近邻算法模型

本文为&#x1f517;365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 任务&#xff1a; ●1. 学习本文的K-邻近算法 ●2. 了解 KNeighborsClassifier 函数 一、基本概念 商业哲学家 Jim Rohn 说过一句话&#xff0c;“你&#xff0c;就是你最常接触的五个人的…