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 多平台发布

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

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

相关文章

【前端开发】Font Awesome 一个基于CSS和LESS的免费图标库工具包,下载与使用教程!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起学习和进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&a…

MATLAB知识点:min : 求最小值 和 max:求最大值

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.1节 min : 求最小值(minimum va…

小迪安全23WEB 攻防-Python 考点CTF 与 CMS-SSTI 模版注入PYC 反编译

#知识点: 1、PYC 文件反编译 2、Python-Web-SSTI 3、SSTI 模版注入利用分析 各语言的SSIT漏洞情况: SSIT漏洞过程: https://xz.aliyun.com/t/12181?page1&time__1311n4fxni0Qnr0%3DD%2FD0Dx2BmDkfDCDgmrYgBxYwD&alichlgrefhtt…

链表--226. 翻转二叉树/medium 理解度A

226. 翻转二叉树 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2&…

windows?linux?如何使用JMeter

windows?linux?如何使用JMeter 安装JMeter的步骤以GUI模式启动JMeter如何在非GUI模式下运行JMeter在linux中使用JMeter 安装JMeter的步骤 JMeter 是一个纯 Java应用程序,应该在任何具有兼容Java实现的系统上正确运行。 安装 JMeter 的步骤 步骤1)安…

小迪安全21WEB 攻防-JavaWeb 项目JWT 身份攻击组件安全访问控制

#知识点: 1、JavaWeb 常见安全及代码逻辑 2、目录遍历&身份验证&逻辑&JWT 3、访问控制&安全组件&越权&三方组件 Java:大部分都是第三方插件出现漏洞 webgoat的搭建:——java靶场 JDK版本要求:11.0…

应用案例 | 基于三维机器视觉的螺钉抓取上料解决方案

近年来,机器人技术日新月异,为各行各业的发展注入了新的活力。制造业作为一项工作内容重复、劳作时间长的产业,对自动化改造需求最为迫切,因此,也是机器人技术渗透最早、最广的产业。 螺钉抓取在制造业的应用十分广泛&…

Tomcat好帮手---JDK

目录 1、Tomcat好帮手---JDK 2、安装JDK 部署Tomcat参考博主博客 部署TOMCAT详解-CSDN博客 1、Tomcat好帮手---JDK JDK是 Java 语言的软件开发工具包,JDK是整个java开发的核心,它包含了JAVA的运行环境(JVMJava系统类库)和JAVA…

OpenCV书签 #互信息的原理与相似图片搜索实验

1. 介绍 互信息(Mutual Information) 是信息论中的一个概念,用于衡量两个随机变量之间的关联程度。在图像处理和计算机视觉中,互信息常被用来度量两幅图像之间的相似性。 互信息可以看成是一个随机变量中包含的关于另一个随机变…

HashMap源码阅读;HashMap的put()方法;

当我们使用一个HashMap做插入操作时。put方法内部都做了什么呢&#xff1f; public static void main(String[] args) {HashMap<String, String> map new HashMap<>();map.put("key1", "value1"); }put 方法 源码 public V put(K key, V v…

Apache Jmeter测试websocket连通性

1、在windows电脑下载apache jmeter 下载地址详情Apache-Jemeter-download 2、解压打开文件夹&#xff0c;下载 jmeter-plugins-manager下载地址&#xff0c;下载后存放到lib的ext路径下&#xff0c; 同时也可以更改bin路径下的jmeter.properties对应第三十七行修改为如下&…

Java 设计者模式以及与Spring关系(五) 策略和观察者模式

目录 简介: 23设计者模式以及重点模式 策略模式&#xff08;Strategy Pattern&#xff09; 示例 spring中应用 观察者模式&#xff08;Observer&#xff09; 示例 spring中应用 简介: 本文是个系列一次会出两个设计者模式作用&#xff0c;如果有关联就三个&#xff0c;…

03_web端交互协议之HTTP

本课目标 (Objective) 理解HTTP协议简介掌握常见HTTP请求方式掌握HTTP协议响应状态码理解HTTP协议的交互原理 1. 前后端是如何交互的 通信协议&#xff08;Communication Protocol&#xff09;是指通信双方对数据传送控制的一种约定。 前端与服务端的数据传输是基于HTTP协议…

中仕教育:事业编招考全流程介绍

一、报名阶段 1. 了解查看招聘信息&#xff1a;查看各类事业编岗位的招聘信息&#xff0c;包括岗位职责、招聘条件、报名时间等。 2. 填写报名表&#xff1a;按照要求填写报名表&#xff0c;包括个人信息、教育背景、工作经历等内容。 3. 提交报名材料&#xff1a;将报名表及…

Hive3.1.3基础学习

文章目录 一、Hive入门与安装1、Hive入门1.1 简介1.2 Hive架构原理 2、Hive安装2.1 安装地址2.2 Hive最小化安装(测试用)2.3 MySQL安装2.4 配置Hive元数据存储到MySQL2.5 Hive服务部署2.6 Hive服务启动脚本(了解) 3、Hive使用技巧3.1 Hive常用交互命令3.2 Hive参数配置方式3.3 …

利用sqlmap探测get类型注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 基础:GET基于报错的sql注入利用-脱库-CSDN博客 sqlmap 工具是kali自带的 例子我都用sql靶场的第一关做演示 1、探测数据库名 sqlmap -u "http://192.168.0.103/sqlilab…

【CANoe使用大全】——Graphics窗口

文章目录 1.Graphics作用2.Graphics窗口打开方式2.1.Analysis—>Graphics2.2.Measurement Setup ------> Graphics 3.变量添加4.Graphics窗口菜单栏介绍4.1. 单个测量光标4.2. 差分测量光标4.3.Y轴的显示方式4.3.1.Show Y-Axis of Selected Signal4.3.2.Show All Y-Axis4…

抽象工厂模式-C#实现

该实例基于WPF实现&#xff0c;直接上代码&#xff0c;下面为三层架构的代码。 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练习.Model.抽象工厂模式 {public abstrac…

[GXYCTF2019]BabyUpload1

尝试各种文件&#xff0c;黑名单过滤后缀ph&#xff0c;content-type限制image/jpeg 内容过滤<?&#xff0c;木马改用<script languagephp>eval($_POST[cmdjs]);</script> 上传.htaccess将上传的文件当作php解析 蚁剑连接得到flag

OPENMV驱动云台实现颜色追踪

前言 本篇文章旨在记录我电赛期间学习OPENMV对颜色识别&#xff0c;以及通过串口通信的方式将坐标数据传给单片机&#xff0c;从而驱动舵机云台进行颜色追踪。 一、OPENMV色块识别追踪代码 # Single Color RGB565 Blob Tracking Example # # This example shows off single co…