JavaScript 学习笔记(JS进阶 Day2)

「写在前面」

本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容:
1. JavaScript 学习笔记(Day1)
2. JavaScript 学习笔记(Day2)
3. JavaScript 学习笔记(Day3)
4. JavaScript 学习笔记(Day4)
5. JavaScript 学习笔记(Day5)
6. JavaScript 学习笔记(WEB APIs Day1)
7. JavaScript 学习笔记(WEB APIs Day2)
8. JavaScript 学习笔记(WEB APIs Day3)
9. JavaScript 学习笔记(WEB APIs Day4)
10. JavaScript 学习笔记(WEB APIs Day5)
11. JavaScript 学习笔记(WEB APIs Day6)
12. JavaScript 学习笔记(JS进阶 Day1)


目录

  • 1 深入对象
  • 2 内置构造函数
  • 3 综合案例

1 深入对象

1.1 创建对象三种方式

P164:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=164

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

const o = {
name: '佩奇'
}

2. 利用 new Object 创建对象

const o = new Object({ name: '佩奇' })
console.log(o) // {name: '佩奇'}

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

1.2 构造函数

P165:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=165

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

不过有两个约定:

  1. 它们的命名以大写字母开头。
  2. 它们只能由 "new" 操作符来执行。
function Pig(name, age, gender) {
this.name = name
this.age = age
this.gener = gender
}
// 创建佩奇对象
const Peppa = new Pig('佩奇', 6, '女')
// 创建乔治对象
const George = new Pig('乔治', 3, '男')
// 创建猪妈妈对象
const Mum = new Pig('猪妈妈', 30, '女')
// 创建猪爸爸对象
const Dad = new Pig('猪爸爸', 32, '男')
console.log(Peppa)// {name: '佩奇', age: 6, gener: '女'}

说明:

  1. 使用 new 关键字调用函数的行为被称为实例化
  2. 实例化构造函数时没有参数时可以省略 ()
  3. 构造函数内部无需写return,返回值即为新创建的对象
  4. 构造函数内部的 return 返回的值无效,所以不要写return
  5. new Object() new Date() 也是实例化构造函数

实例化执行过程

P166:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=166

说明:

  1. 创建新对象
  2. 构造函数this指向新对象
  3. 执行构造函数代码,修改this,添加新的属性
  4. 返回新对象

1.3 实例成员&静态成员

P167:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=167

实例成员

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

说明:

  1. 实例对象的属性和方法即为 实例成员
  2. 为构造函数传入参数,动态创建结构相同但值不同的对象
  3. 构造函数创建的实例对象彼此独立互不影响。
// 构造函数
function Person() {
// 构造函数内部的 this 就是实例对象
// 实例对象中动态添加属性
this.name = '小明'
// 实例对象动态添加方法
this.sayHi = function () {
console.log('大家好~')
}
}

// 实例化,p1 是实例对象
// p1 实际就是构造函数内部的 this
const p1 = new Person()
console.log(p1)
console.log(p1.name) // 访问实例属性
p1.sayHi() // 调用实例方法

静态成员

说明:

  1. 构造函数的属性和方法被称为 静态成员
  2. 一般公共特征的属性或方法静态成员设置为静态成员
  3. 静态成员方法中的 this 指向构造函数本身
// 构造函数
function Person(name, age) {
// 省略实例成员
}
// 静态属性
Person.eyes = 2
Person.arms = 2
// 静态方法
Person.walk = function () {
console.log( '^_^人都会走路...")
// this 指向 Person
console.log(this.eyes)
}

2 内置构造函数

P168:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=168

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

基本数据类型:

  • 字符串、数值、布尔、undefined、null

引用类型:

  • 对象

但是,我们会发现有些特殊情况:

// 普通字符串
const str = 'andy'
console.log(str.length) // 4

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

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

引用类型

  • Object,Array,RegExp,Date 等

包装类型

  • String,Number,Boolean 等

2.1 Object

P169:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=169

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

// 通过构造函数创建普通对象
const user = new object({name: '小明', age: 15})

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

学习三个常用静态方法(静态方法就是只有构造函数Object可以调用的):

  • Object.keys: 获取对象中所有属性(键)
  • Object.values: 获取对象中所有属性值
  • Object.assign: 用于对象拷贝
const o = { uname: 'pink', age: 18 }
// 1.获得所有的属性名
console.log(0bject.keys(o)) // 返回数组 ['uname', 'age']
// 2.获得所有的属性值
console.log(0bject.values(o)) // ['pink', 18]
// 3.对象的拷贝
const oo = {}
Object.assign(oo, o)
console.log(oo) // { uname: 'pink', age: 18 }
Object.assign(o, { gender: '女' })
console.log(o) // { uname: 'pink', age: 18, gender: '女' }

2.2 Array

P170:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=170

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

const arr = new Array(3, 5)
console.log(arr) // [3,5]

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

1. 数组常见实例方法-核心方法

方法作用说明
forEach遍历数组不返回,用于不改变值,经常用于查找打印输出值
filter过滤数组筛选数组元素,并生成新数组
map迭代数组返回新数组,新数组里面的元素是处理之后的值,经常用于处理数据
reduce累计器返回函数累计处理的结果,经常用于求和等

reduce

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

语法:

arr.reduce(function(累计值, 当前元素 [,索引号][,源数组]){}, 起始值)

累计值参数:

  1. 如果有起始值,则以起始值为准开始累计, 累计值 = 起始值
  2. 如果没有起始值, 则累计值以数组的第一个数组元素作为起始值开始累计
  3. 后面每次遍历就会用后面的数组元素 累计到 累计值 里面 (类似求和里面的 sum )

例:

const arr = [1, 5, 8]

// 1.没有初始值
const total = arr.reduce(function (prev, current) {
return prev + current
})
console.log(total) // 14

// 2.有初始值
const total = arr.reduce(function (prev, current) {
return prev + current
}, 10)
console.log(total) // 24

// 3. 箭头函数的写法
const total = arr.reduce((prev,current) => prev + current, 10)
console.log(total) // 24

2. 数组常见方法-其他方法

P171:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=171

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

2.3 String

P172:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=172

1. String 常见实例方法

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

渲染赠品案例:

P173:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=173

2.4 Number

P174:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=174

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

常用方法:

toFixed() 设置保留小数位的长度

// 数值类型
const price = 12.345
// 保留两位小数 四舍五入
console.log(price.toFixed(2)) // 12.35

3 综合案例

购物车展示:

P175:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=175

P176:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=176


「结束」
alt

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PCL-IO输入输入模块

IO输入输入模块 一、概述二、点云数据格式1. PCD 格式2. PLY 格式3. OBJ 格式4. STL 格式5. OFF 格式 三、读取3D文件1. API 总览2. 示例 四、保存3D文件1. API 总览2. 示例 一、概述 PCL 库提供了一个模块用来对3D数据进行读写操作,这个库提供了一个模块&#xff…

CPQ配置报价 | 面向非标设备制造项目报价系统解决方案

在非标设备细分领域,企业面向定制型项目经常会遇到以下难题:第一,方案制作效率低,易出错;第二,成本核算过程不严谨,准备性差;第三,报价试算过程不科学;第四&a…

最长公共子串的问题(正常方法和矩阵法,动态规划)

题目: 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符…

C++知识点笔记

二维数组 定义方式: 1、数据类型 数组名[行数][列数]; 2、数据类型 数组名[行数][列数]{{数据1,数据2},{数据3,数据4}}; 3、数据类型 数组名[行数][列数]{数据1,数据2,数据3,数据4}; 4、数据类型 数组名[][列数]{数据1,数据2,数据3,数据4}; 建议:以…

ERROR Failed to get response from https://registry.npm.taobao.org/ 错误的解决

这个问题最近才出现的。可能跟淘宝镜像的证书到期有关。 解决方式一:更新淘宝镜像(本人测试无效,但建议尝试) 虽然无效,但感觉是有很大关系的。还是设置一下比较好。 淘宝镜像的地址(registry.npm.taobao…

leetcode hot 100 电话号码的字母组合

在本题目中,要求我们根据给的数字字符串对应电话号码上的字母组合。所以我们需要建立起数字和电话上字母的对应关系。 然后,组合问题依旧采用回溯来做。首先我们需要确定一下参数,我们需要给的digits,然后还需要字母和数字对应关…

使用IP爬虫代理提取数据的步骤是什么?爬虫代理IP怎么提高采集效率?

​​​​​ 一、使用IP爬虫代理提取数据的步骤 在使用爬虫代理IP提取数据之前,需要先了解数据来源和目标网站的结构。以下是一个基本的步骤:1.确定数据来源 首先需要确定要提取数据的网站或数据源,了解网站的结构、数据存储方式以及数据更新…

HTML - 介绍

一.简介 HTML,超文本标记语言(HyperText Markup Language),是一种用于创建网页的标准标记语言。我们可以使用HTML建立自己的WEB网站或特定页面。HTML运行在浏览器上,由浏览器解析。 ⚠️注意:HTML文件的后缀…

HTML以及CSS相关知识总结(二)

css文件写样式时建议遵循以下顺序: 1.布局定位属性:display/position/float/ear/visibility/overflow(建议display第一个写,毕竟关系到模式) 2.自身属性: width/height/margin/ padding /border/ background 3.文本属性: color/font / text-decoration/t…

区块链中分叉机制

在区块链中我们经常会听到分叉【fork】的概念,今天通过这篇文章来详细的介绍下分叉 什么是分叉 在介绍区块链的分叉机制中,我们以公有链来说明,公有链是去中心化的。任何协议的改变都是代价巨大的,因为全网那么多节点&#xff0…

国产GC6610应用于打印机,医疗器械等产品中,可替代TMC2208/2209/trinamic的参数分析

电机驱动芯片应用范围十分广泛,目前已经广泛应用于消费电子、电动工具、打印机、3D打印、安防监控、通信设备、汽车,以及工业控制等领域。据市场调研机构ResearchAndMarkets统计,2021年全球电机驱动芯片是市场规模为38.8亿美元,预…

uniapp小程序:内存超过2mb解决方法(简单)message:Error: 上传失败:网络请求错误 代码包大小超过限制。

分析:这种情况是代码文件内存超过2mb无法进行预览上传 解决方法: 1、Hbuilder中点击运行-->运行到小程序模拟器--->运行时是否压缩代码 2、在微信小程序中点击详情--->本地设置: 3、点击预览即可运行了

Java通过模板替换实现excel的传参填写

以模板为例子 将上面$转义的内容替换即可 package com.gxuwz.zjh.util;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.*; import java.util.HashMap; import java.util.Map; import java.io.IOException; impor…

vue3 常见的路由传参无刷新修改当前路由url带参

无刷新修改当前路由url带参 //tabs切换部分 <el-tabs v-model"activeName" class"demo-tabs" tab-click"handleClick"><el-tab-pane v-for"(item,index) in tagList" :label"item.title" :name"item.name…

4-4 D. 银行排队问题之单队列多窗口加VIP服务

题目描述 假设银行有K个窗口提供服务&#xff0c;窗口前设一条黄线&#xff0c;所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时&#xff0c;下一位顾客即去该窗口处理事务。当有多个窗口可选择时&#xff0c;假设顾客总是选择编号最小的窗口。 有些银行会给VIP客户以…

gitee仓库使用中的警告

当 Git 执行 git pull 命令时&#xff0c;有时候会出现类似下面的警告信息&#xff1a; warning: ----------------- SECURITY WARNING ---------------- warning: | TLS certificate verification has been disabled! | warning: ------------------------------------------…

计算机毕业设计 基于SpringBoot的线上心理咨询室系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Ceph分布式存储自动化运维平台开发实践

文章目录 1. 背景介绍1.1 什么是Ceph&#xff1f;1.1.1 Ceph的核心组件1.1.2 Ceph的优势 1.2 自动化运维的需求目标 2. 平台架构设计和组件版本2.1 平台架构设计2.2 组件版本2.3 模块划分&#xff08;已经脱敏处理&#xff09;2.3.1 当前版本V1.0支持功能2.3.2 前后端代码结构t…

勤学苦练“prompts“,如沐春风“CodeArts Snap“

前言 CodeArts Snap 上手一段时间了&#xff0c;对编程很有帮助。但是&#xff0c;感觉代码编写的不尽人意。 我因此也感到困惑&#xff0c;想要一份完整的 CodeArts Snap 手册看看。 就在我感觉仿佛"独自彷徨在这条悠长、悠长又寂寥的雨巷"时&#xff0c;我听了大…

Transformers Tutorial教程3-7

Introduction Transformers库的一个使用&#xff0c;用这个库就可以很轻松地去使用和训练自己的一个预训练语言模型。 outline 介绍什么是Transformers&#xff0c;为什么要用它 介绍一些比较常用的接口 最后会给出一个demo&#xff0c;帮助你们快速地入门 what is Transf…