JavaScript进阶 第二天

news2025/1/21 2:59:49
  • 深入对象
  • 内置构造函数

一. 深入对象

  • 创建对象三种方式
  • 构造函数
  • 实例成员&静态成员

1.1 创建对象三种方式

① 利用对象字面量创建对象

const o = {
   'name': '哈哈'
}

② 利用new Object 创建对象

const o = new Object({ name: '哈哈' })

③ 构造函数创建对象

1.2 构造函数

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

② 使用场景:常规的{...} 语法允许创建一个对象,可以使用构造函数快速创建多个类似的对象

③ 约定:

  • 命名以大写字母开头
  • 只能由 new 操作符来执行

④ 写法:

  • 使用new关键词调用函数的行为被称为实例化
  • 实例化构造函数没有参数时可以省略()
  • 构造函数内部无需写return,返回值即为新创建的对象
  • 构造函数内部的return返回的值无效,所以不要写return
  • new Object()  new Date() 也是实例化构造函数
function Pig (uname, age) {
    this.name = uname
    this.age = age
}
const p = new Pig('佩奇', 6)
const q = new Pig('乔治', 3)

⑤ 实例化执行过程

  • 创建新的空对象
  • 构造函数this指向新对象
  • 执行构造函数代码,修改this, 添加新的属性
  • 返回新对象

 1.3 实例成员&静态成员

 ① 实例成员

  • 通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员
  • 为构造函数传入参数,创建结构相同但值不同的对象
  • 构造函数创建的实例对象彼此独立互不影响
function Pig (name) {
    this.name = name
}
const peiqi = new Pig('佩奇')
// 1.实例对象上的属性和方法称为实例成员
peiqi.sayHi = () => {
    console.log('hi')
}
console.log(peiqi)

② 静态成员

  • 构造函数的属性和方法被称为静态成员(静态属性和静态方法)
  • 静态成员只能构造函数来访问
  • 静态方法中的this指向构造函数
Pig.eyes = 2
console.log(Pig.eyes)

Pig.sayHi = function () {
    console.log(this)
}
// 静态成员调用
Pig.sayHi()

二.内置构造函数

  • Object
  • Array
  • String
  • Number

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

 ②  引用类型:对象

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

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

 ⑤ 包装类型:String, Number, Boolean 等

2.1 Object

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

const o = new Object({ name: '哈哈' })

② 三个静态方法

(1)获取所有属性名:Object.keys, 返回的是一个数组

const o = {uname:'pink', age: 18}
// 1.获取所有属性名
console.log(Object.keys(o))

(2)获取所有的属性值:Object.values

console.log(Object.values(o))

(3)拷贝对象: Object.assign(目标,拷贝对象)

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

const oo = {}
Object.assign(oo, o)
console.log(oo)


// 追加一个新的属性
Object.assign(o, {gender: '女'})

 2.2 Array

 Array是内置的构造函数,用于创建数组, 建议使用字面量创建,不用Array构造函数创建

1. 实例方法

  •  reduce 返回累计处理的结果,经常用于求和
  • 基本语法
arr.reduce(function(){}, 起始值)
arr.reduce(function(上一次值, 当前值){}, 初始值)
  • 参数

     ① 没有初始值

const total = arr.reduce(function (pre, current) {
    return pre + current
})

     ②  有初始值

const total = arr.reduce(function (pre, current) {
    return pre + current
}, 10)

    ③ 箭头函数写法

const total = arr.reduce((pre, current) => pre + current, 10)
console.log(total)

   ④ reduce的执行过程

  • 如果没有初始值,则上一次值是数组的第一个元素
  • 每一次循环,把返回值给作为下一次循环的上一次值
  • 如果有起始值,则起始值作为上一次值 

2.其他方法

编号方法含义
1join数组元素拼接为字符串,返回字符串
2find查找元素,返回符合测试条件的第一个数组值,如果没有符合条件的就返回undefined
3every检测数组所有元素是否都符合指定条件,如果所有元素都通过检测返回true, 否则返回false
4some检测数组中的元素是否满足指定条件,如果数组中有元素满足条件返回true
5concat合并两个数组,返回生成新数组
6sort对原数组单元值排序
7splice删除或替换原数组单元
8reverse反转数组
9findIndex查找元素的索引值

  • find方法使用举例:
const arr = ['red', 'blue', 'green']
const re = arr.find(function (item) {
    return item === 'blue'
})
console.log(re)



const arr = [
{
   name: '小米',
   price: 1999
},
{
   name: '华为',
   price: 3999
}
]

const re = arr.find(item => item.name === '小米')
console.log(re)
  •  every方法:每一个是否都符合条件,如果都符合,返回true, 如果有一个不符合,返回false
const arr1 = [10, 20, 30]
const flag = arr1.every(item => item >= 20)
console.log(flag)
  • some方法
const arr1 = [10, 20, 30]
const flag = arr1.some(item => item >= 40)
console.log(flag)

3.数组静态方法

  • 把伪数组转换为真数组
const lis = document.querySelectorAll('ul li')
// lis.pop()   // 伪数组无法使用数组的方法
const liss = Array.from(lis)
liss.pop()
console.log(liss)

2.3 String

编号方法含义
1length实例属性,用来获取字符串的长度
2split(’分隔符‘)用来将字符串拆分成数组
3substring(需要截取的第一个字符的索引,[, 结束的索引号)用于字符串截取
4startswith(检测字符串[, 检测位置索引号]) 检测是否以某字符开头
5includes(搜索的字符串[, 检测位置索引号])判断一个字符串是否包含在另一个字符串中,根据情况返回true或false
6toUpperCase 将字母转换成大写
7toLowerCase用于将字母转换成小写
8indexOf检测是否包含某字符
9endsWith检测是否以某字符结尾
10replace用于替换字符串,支持正则匹配
11match用于查找字符串,支持正则匹配

// 1.split 字符串转换为数组和join相反
const str = 'pink,red'
const arr = str.split(',')
console.log(arr)

// 2.字符串截取
const str = 'hello'
// 不包含结束的索引号
console.log(str.substring(2, 3))

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

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

相关文章

致远OA M1Server RCE漏洞复现

0x01 产品简介 致远M1移动协同软件,结合移动应用特色的信息终端,帮您高效管理,掌控全局;基于移动互联技术的产品,实现全天候在线,随时随地了解企业信息;触控式操作,舒适的滑动体验&a…

Prim+Kruskal(最小生成树)

Prim算法求最小生成树 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E),其中 V 表示图中点的集…

FPGA:RS编码仿真过程

FPGA:RS编码仿真过程 RS码是一种纠错性能很强的线性纠错码,能够纠正随机错误和突发错误。RS码是一种多进制BCH码,能够同时纠正多个码元错误。 之前已经记录了在MATLAB中进行rs编解码的过程,现在利用FPGA的IP核实现RS编码的过程&…

Hlang社区-社区导航栏实现

文章目录 前言项目结构导航实现创作中心移动小球消息提示完整代码前言 okey,这里的话是我们社区导航栏的实现: 废话不多说,看看效果: 我甚至为此用New Bing生成了一个Logo。 项目结构 废话不多说,先来看到我们的项目结构: 在这里导航栏是一个组件。 在App.vue里面直…

POST请求负载form-data表单数据需要同步修改header的Content-type

需要读公司的一个接口,显示负载是“表单数据” 一开始没注意类型,按照公司其他接口的情况用了json,结果返回的数据时间阶段没有体现dct的要求,脚本如下(错误示范) from requests import post from json im…

企业权限管理(十六)-aop日志

SysLog实体类 public class SysLog {private String id;private Date visitTime;private String visitTimeStr;private String username;private String ip;private String url;private Long executionTime;private String method;public String getId() {return id;}public v…

Request+Response

文章目录 1. 介绍2. Request对象2.1 Request继承体系2.2 Request获取请求数据1.获取请求行2.获取请求头3.获取请求体4. 请求参数的通用方式5. 解决中文乱码问题 2.3 Request请求转发请求转发资源间共享数据: 3. Response对象3.0 Response 继承体系3.1 Response设置响应数据的功…

RK3288Android7.1上10寸mipi屏兼容

需求:RK3288Android7.1上10寸mipi屏兼容 思路: 1、修改屏幕厂商提供的屏幕初始化指令为rk可以识别的格式存放在panel-init-sequence 2、修改屏参display-timings 3、确定reset-gpio 实现: 首先根据屏幕厂商提供的初始化指令将panel-init-seq…

AMS的起源,SystemServer的前世今生

作者:OpenGL 前世 SystemServer的创建还得追溯到之前的Zygote进程中的ZygoteInit代码中。这里的Zygote.forkSystemServer()方法就是实现分裂的关键代码。它内部调用了native方法实现了进程分裂。 执行完这行代码之后。我们的系统中就会出现两个一模一样的进程&…

复现基于PYNQ-Z2的手写数字识别卷积加速器设计

来源雪天鱼 基于PYNQ-Z2的手写数字识别卷积加速器设计【持续更新】_雪天鱼的博客-CSDN博客 一、设计思路 1、输入28 x 28 的图片,非png格式,而是txt格式,将图片数据进行量化,存入到txt文件当中。 2、在PL端实现卷积神经网络LeN…

关于Linux Docker springboot jar 日志时间不正确 问题解决

使用Springboot项目的jar,制作了一个Docker镜像,启动该镜像后发现容器和容器中的Springboot 项目的日志时间不正确。 解决 查看容器时间命令为: docker exec 容器id date 1. 容器与宿主机同步时间 在启动镜像时候把操作系统的时间通过&q…

可白嫖的4家免费CDN,并测试其网络加速情况(2023版)

网站加载速度优化过程中,不可避免的会用上CDN来加速资源的请求速度。但是市面上的CDN资源几乎都是要收费的,而且价格还不便宜,对于小公司站长来讲,这将是一笔不小的开销。不过还是有一些良心公司给我们提供了免费的资源&#xff0…

SASS 学习笔记

SASS 学习笔记 总共会写两个练手项目,成品在 https://goldenaarcher.com/scss-study 可以看到,代码在 https://github.com/GoldenaArcher/scss-study。 什么是 SASS SASS 是 CSS 预处理,它提供了变量(虽然现在 CSS 也提供了&am…

【C# 基础精讲】异常的类型和处理方法

异常(Exception)是在程序执行过程中发生的意外或异常情况,例如除零错误、空引用访问、文件不存在等。在C#及其他编程语言中,异常处理是一种重要的机制,用于捕获和处理程序运行时可能出现的错误,以保证程序的…

939. 最小面积矩形;2166. 设计位集;2400. 恰好移动 k 步到达某一位置的方法数目

939. 最小面积矩形 核心思想:枚举矩形的右边那条边的两个点,并用一个哈希表存储相同纵坐标的最近出现的列的列数,不断更新最近出现的左边那条边。 2166. 设计位集 核心思想:这题主要是时间复杂度的优化,用一个flag来标记当前翻转…

word在页眉页脚添加第几页

如果直接在页脚添加数字,整个文档的页脚会是统一的。 这里我们需要的是每一页按照页码排布的文档,所以首先打开页脚设置: 在插入内选择页脚 在弹出的下拉窗口中选择空白即可 在菜单栏会多出“页眉和页脚”的选项卡,选择其中的页…

使用拦截器+Redis实现接口幂等

文章目录 使用拦截器Redis实现接口幂等1.思路分析2.具体实现2.1 创建redis工具类2.2 自定义幂等注解2.2 自定义幂等拦截器2.3 注入拦截器到容器 3.测试 使用拦截器Redis实现接口幂等 1.思路分析 接口幂等有很多种实现方式,拦截器/AOPRedis,拦截器/AOP本…

以对话为场景本质,AIGC 将如何改变游戏规则

8 月 17 日(本周四),融云直播课从排查问题到预警风险,社交产品如何更好保障体验、留住用户?欢迎点击报名~ 生成式 AI 公司 MosaicML 以约 13 亿美元的价格被大数据巨头 Databricks 收购,这个发生于 6 月底的…

python获取音乐文件

浏览器打开音乐地址 http://www.htqyy.com/top/hot 点击第一首歌曲,会打开新的网页并且可以获取 改歌曲的id,就是url中的33 在播放页面点击F12,打开开发者调试功能 如下图所示,在script脚本中可以获取歌曲的下载数据 host&#…

【DICOM医学影像1】数据格式存储于显示,基本知识科普指南

DICOM(Digital Imaging and Communications in Medicine)数据格式,是医学影像存储中的标准格式。无论是X光、CT,还是MRI等等影像,采集的原理不同,但是存储的格式一般都是统一的。本文就对DICOM文件的图像显…