From f640169d42950f4d5cc607b59b28aaa69950ecf4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E6=98=8E=E5=81=A5?= <2161737470@qq.com>
Date: Wed, 6 Dec 2023 11:41:02 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=B9=9D=E6=AC=A1=E4=BD=9C?=
=?UTF-8?q?=E4=B8=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../20231205 js\350\277\233\351\230\26602.md" | 375 ++++++++++++++++++
1 file changed, 375 insertions(+)
create mode 100644 "04 \346\235\216\346\230\216\345\201\245/20231205 js\350\277\233\351\230\26602.md"
diff --git "a/04 \346\235\216\346\230\216\345\201\245/20231205 js\350\277\233\351\230\26602.md" "b/04 \346\235\216\346\230\216\345\201\245/20231205 js\350\277\233\351\230\26602.md"
new file mode 100644
index 0000000..2631625
--- /dev/null
+++ "b/04 \346\235\216\346\230\216\345\201\245/20231205 js\350\277\233\351\230\26602.md"
@@ -0,0 +1,375 @@
+#### 一.深入对象
+
+**构造函数**:是一种特殊的函数,主要用来初始化对象
+
+使用场景:==多个对象有相同属性,封装成一个构造函数==
+
+~~~ javascript
+// 创建一个构造函数,首字母要大写
+function Pig(uname,age){
+ this.uname = uname
+ this.age = age
+}
+// 创建对象
+const p1 = new Pig('佩奇',6)
+const p2 = new Pig('乔治',4)
+~~~
+
+实例成员:通过构造函数创建的对象称之为实例对象,==实例对象中==的属性和方法称之为==实例成员==(实例属性和实例方法)
+
+- 为构造函数传入参数,创建结构相同但值不同的对象
+- 构造函数创建的实例对象彼此独立互不影响
+
+静态成员:构造函数的属性和方法被称为静态成员(静态属性和静态方法)
+
+- 静态成员只能构造函数访问
+- 静态方法中 this 指向构造函数
+
+~~~ javascript
+// 静态成员
+function Pig(name){
+ this.name = name
+}
+Pig.eyes = 2 // 静态属性
+Pig.sayHi = function(){
+ log(this)
+}
+Pig.sayHi() // 指向构造函数
+log(Pig.eyes) // 2
+~~~
+
+#### 二.内置构造函数
+
+其实字符串。数值。布尔等基本数据类型也都有专门的构造函数,称为包装类型
+
+**Object**
+
+object 是内置的构造函数,用于创建普通对象
+
+三个常用静态方法:
+
+- **Object.keys** 获取对象中的所有属性(键),返回数组
+- **Object.keys** 获取对象中的所有属性值(值),返回数组
+- **Object.assign** 常用于对象拷贝
+
+~~~ javascript
+const o = {uname: 'pink',age: 18}
+log(Object.keys(o)) // [uname,age]
+log(Object.values(o)) // ['pink',18]
+// 拷贝
+const oo = {}
+Object.assign(oo,o) // 将 o 对象拷贝给 oo 对象
+// 给对象追加属性
+Object.assign(o,{sex: '男'})
+log(o) // [uname: 'pink',age: 18,sex: '男']
+~~~
+
+**Array**
+
+Array 是内置构造函数,用于创建数组
+
+常用实例方法:
+
+| 方法 | 作用 | 说明 |
+| ----------- | -------- | ---------------------------------------------------- |
+| **forEach** | 遍历数组 | 不返回数组,经常用于==查找遍历数组元素== |
+| **filter** | 过滤数组 | ==返回新数组==,返回==筛选满足条件==的数组元素 |
+| **map** | 迭代数组 | ==放回新数组==,返回==处理之后==的数组元素 |
+| **reduce** | 累计器 | 返回累计处理的结果,经常用于求和等 |
+| **find** | 查找元素 | 返回符合条件的第一个数组元素值,没则有返回undefined |
+| **every** | 检查数组 | 检查数组中所有元素,都满足某个条件,返回 true或false |
+| **some** | 检查数组 | 检查数组中所有元素,有元素满足条件,返回 true或false |
+| **concat** | 合并数组 | 合并两个数组,返回一个新数组 |
+| **sort** | 排序数组 | 对原数组单元值进行排序 |
+| **reverse** | 反转数组 | 将数组反转 |
+
+~~~ javascript
+// 数组 reduce 方法
+const arr = [1,5,8]
+//1. 没有初始值
+const total = arr.reduce(function(prev,current){
+ return prev + current //上一次的值 + 当前的值
+})
+log(total) // 14
+//2. 有初始值
+const total = arr.reduce(function(prev,current){
+ return prev + current //上一次的值 + 当前的值
+}.10)
+log(total) // 24
+//3. 箭头函数写法
+const total = arr.reduce((prev,current) => prev + current, 10)
+~~~
+
+案例:有一个员工数组对象,计算当月支出多少薪资
+
+~~~ javascript
+const arr =[
+ {
+ uname: '张三',
+ salary: 10000
+ }, {
+ uname: '李四',
+ salary: 10000
+ }, {
+ uname: '王五',
+ salary: 10000
+ }
+]
+//一定要有初始值,否则默认第一个对象为初始值
+const total = arr.reduce((prev,current) => prev + current.salary, 0)
+log(total) // 30000
+~~~
+
+静态方法 **Array.from(数组)** 将伪数组转换为真数组
+
+~~~ javascript
+const lis = document.querySelectorAll('ul li')
+const liArr = Array.from(lis)
+~~~
+
+**String**
+
+常见实例方法1:
+
+| 方法 | 说明 |
+| --------------------------------------- | --------------------------------------------- |
+| **split(’分隔符’)** | 将字符串转换为数组,和 join() 相反 |
+| **substring(起始索引,结束索引)** | 截取字符串 |
+| **startswith(检查字符串,检测开始索引)** | 检测是否以某字符开头,返回布尔值,endwith相反 |
+| **includes(搜索的字符串,位置索引)** | 判断一个字符串是否包含某个字符 |
+
+**Number**
+
+ **toFixed()** 设置保留小数位的长度
+
+~~~ javascript
+const num = 10.923
+log(num.toFixed(1)) //10.9
+log(num.toFixed(2)) //10.92
+log(num.toFixed()) //11 四舍五入
+~~~
+
+
+
+### 作业
+
+**综合案例**
+
+~~~ html
+
+~~~
+
+**购物车**
+
+~~~ html
+
+~~~
+
--
Gitee