目录
深入对象
创建对象三种方式
1. 利用对象字面量创建对象
2. 利用 new Object 创建对象
3. 利用构造函数创建对象
构造函数
构造函数 :
是一种特殊的函数,主要用来初始化对象
通过
构造函数
来
快速创建多个类似的对象
。
构造函数在技术上是常规函数。不过有两个约定:1. 它们的命名以大写字母开头。2. 它们只能由 "new" 操作符来执行。
创建构造函数:

说明:
1.
使用 new 关键字调用函数的行为被称为实例化
2. 实例化构造函数时没有参数时可以省略 ()
3. 构造函数内部无需写return,
返回值即为新创建的对象
4. 构造函数内部的 return 返回的值无效,
所以不要写return
5. new Object() new Date() 也是实例化构造函数
实例化执行过程
1. 创建新的
空
对象
2. 构造函数this指向新的
空
对象
3. 执行构造函数代码,修改this,添加新的属性
4. 返回新对象

实例成员&静态成员
实例成员:
通过构造函数创建的对象称为实例对象
,实例对象中的属性和方法称为
实例成员。
说明:1. 实例对象的属性和方法即为实例成员2. 为构造函数传入参数,动态创建结构相同但值不同的对象3. 构造函数创建的实例对象彼此独立互不影响。
静态成员:
构造函数的属性和方法被称为
静态成员
说明:1. 构造函数的属性和方法被称为静态成员2. 一般公共特征的属性或方法静态成员设置为静态成员3. 静态成员方法中的 this 指向构造函数本身
内置构造函数
在 JavaScript 中
最主要
的数据类型有 6 种:
基本数据类型:
字符串、数值、布尔、undefined、null
引用类型:
对象
但是,我们会发现有些特殊情况:

其实字符串、数值、布尔、等基本类型也都有专门的构造函数,这些我们称为
包装类型。
JS中几乎所有的数据都可以基于构成函数创建。
Object
Object 是内置的构造函数,用于创建普通对象。

推荐使用字面量方式声明对象
,而不是 Object 构造函数
学习三个常用静态方法(静态方法就是只有构造函数Object可以调用的)
以前
现在
作用:
Object.keys 静态方法获取对象中
所有属性名
语法:

注意:
返回的是一个数组
作用:
Object.values 静态方法获取对象中
所有属性值
语法:

注意:
返回的是一个数组
作用:
Object. assign 静态方法常用于对象拷贝
语法:

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

Array
Array 是内置的构造函数,用于创建数组
创建数组建议使用字面量创建,不用 Array构造函数创建
1. 数组常见实例方法-核心方法

作用:
reduce 返回函数累计处理的结果,
经常用于求和
等
基本语法:

参数:
起始值可以省略,
如果写就作为第一次累计的起始值
语法:
累计值参数:1. 如果有起始值,则以起始值为准开始累计, 累计值 = 起始值2. 如果没有起始值, 则累计值以数组的第一个数组元素作为起始值开始累计3. 后面每次遍历就会用后面的数组元素 累计到 累计值 里面 (类似求和里面的 sum )
使用场景:求和运算:
2. 数组常见方法-其他方法

find()
const arr = [
{
name: '小米',
price: 1999
},
{
name: '华为',
price: 3999
},
]
const mi = arr.find(item => item.name === '小米')
console.log(mi)
答案是
every()
const arr1 = [10, 20, 30]
const res = arr1.every(item => item >= 10)
console.log(res)// true
每个元素都要满足
some()
跟every()一样,满足一个就Ok
2. 数组常见方法- 伪数组转换为真数组
静态方法 Array.from()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
// Array.from(lis) 把伪数组转换为真数组
const lis = document.querySelectorAll('ul li')
const liss = Array.from(lis)
liss.pop()
console.log(liss)
console.log(lis)
</script>
</body>
</html>
String
1. 常见实例方法

split 把字符串转换为数组 和 join() 相反
const str = '2022-2-2'
const arr = str.split('-')
console.log(arr)
substring(截取字符串)
// 2. 字符串的截取 substring(开始的索引号[, 结束的索引号])
// 2.1 如果省略 结束的索引号,默认取到最后
// 2.2 结束的索引号不包含想要截取的部分
// const str = '今天又要做核酸了'
// console.log(str.substring(5, 7))
startsWith判断是不是以某个字符开头
// const str = 'pink老师上课中'
// console.log(str.startsWith('pink'))
返回一个布尔值
includes判断某个字符是不是包含在一个字符串里面
const str = '我是pink老师'
console.log(str.includes('pink')) // true
Number
Number 是内置的构造函数,用于创建数值
常用方法:
toFixed() 设置保留小数位的长度

// toFixed 方法可以让数字指定保留的小数位数
const num = 10.923
// console.log(num.toFixed())
console.log(num.toFixed(1))// 10.9
const num1 = 10
console.log(num1.toFixed(2))// 10.00
const num2 = 10.123
console.log(num1.toFixed())// 10 不写的话直接要整数
关于小数的计算精度问题:0.1 + 0.2 = ?答案是0.30000000000000004解决方案: 我们经常转换为整数(0.1*100 + 0.2*100)/ 100 === 0.3