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