一、深入对象
1.1 创建对象的三种方式
- 利用对象字面量创建对象
- 利用new object创建对象
const obj = new Object({})
- 利用构造函数创建对象
1.2 构造函数
- 通过构造函数快速创建多个类似的对象
约定:① 命名以大写字母开头 ② 使用构造函数必须加new
语法eg:
【说明】:function Pig(name,age) { this.name = name; this.age = age } const pepa = new Pig('佩奇', 6)
- 使用new关键字调用函数的行为称为实例化
- 实例化构造函数时没有参数可以省略()
- 构造函数内部无需写return,返回值即为新创建的对象
- new Object() 和 new Date()也是实例化构造函数
- 实例化执行过程
① 创建新的空对象 ② 构造函数this指向新对象 ③ 执行构造函数代码,修改this,添加新属性 ④ 返回新对象
1.3 实例成员&静态成员
- 实例对象:通过构造函数创建的对象
实例成员:实例对象中的属性和方法(实例属性和实例方法)
【说明】:① 为构造函数传入参数,创建结构相同但值不同的对象 ② 构造函数创建的实例对象彼此独立互不影响 - 静态成员:构造函数的属性和方法称为静态成员(静态属性和静态方法)
【说明】:① 静态成员只能构造函数访问 ② 静态方法中的this指向构造函数
eg:Date.now()``````Math.PI``````Math.random()
二、内置构造函数
字符串、数值、布尔等基本类型也有专门的构造函数,称为包装类,js中几乎所有数据都可以基于构造函数创建
引用类型:Object、Array、RegExp、Date等
包装类型:String、Number、Boolean等
2.1 Object
- 获得所有的属性名,返回数组
Object.keys(变量名)
- 获得所有的属性值,返回数组
Object.values(变量名)
- 对象的拷贝
Object.assign(变量名,需要拷贝的对象)
2.2 Array
-
数组常见实例方法-核心方法
-
forEach方法
遍历数组,无返回值,适合遍历数组对象
语法:数组名.forEach(function (数组元素,元素索引) { })
-
map方法
迭代数组,并且返回新的数组
map也叫映射,有返回值,forEach没有
语法:数组名.map(function (数组元素,元素索引) { })
-
filter方法
过滤数组,并返回筛选之后元素的新数组,不改变原数组,只能写比较运算符
语法: currentValue必须写,index可选数组名.filter(function (currentValue, index) { return 筛选条件 })
eg:
-
reduce方法
累计器,返回累计处理的结果,经常用于求和
语法:数组名.reduce(function(){}, 起始值) 数组名.reduce(function(上一次值,当前值){}, 起始值)
参数:有起始值,就把起始值加到里面
reduce执行过程:eg:
-
-
数组常见实例方法-其他方法
- find方法
查找元素,返回符合条件的第一个数组元素值,如果没有就返回undefined
语法:arr.find(回调函数[, thisArg])
参数说明:
回调函数:有三个参数:① element:当前遍历到的元素(必写) ② index:当前遍历到的索引(可选) ③ 数组本身(可选)
thisArg:执行回调时用作this的对象
eg:
arr.find(function (item) { return item.name === '小米' })
- every方法
筛选数组,返回布尔值,测试一个数组内所有元素是否都能通过某个指定函数的测试
若都符合条件,返回true,否则返回false,若收到一个空数组,此方法在一切情况下都会返回true
- find方法
-
数组常见静态方法-from方法
把伪数组转换为真数组,返回转换后的真数组
语法:arr.from(需要转换的伪数组)
2.3 String常见实例方法
- split()方法
把字符串转换为数组,返回转换后的数组,和join()相反
语法:str.split('分隔符')
eg:const str = "red,pink" const arr = str.split(',')
- substring()方法
截取字符串,返回截取到的字符串
语法:arr.substring(indexstart[, indexend])
参数:indexstart表示需要截取的部分的第一个元素的索引号,indexend表示要截取到的最后一个元素的后一个元素的索引号,(即左闭右开)如果省略了indexend,默认截取到最后 - startsWith()方法
检测字符串,判断字符串是否以给定的字符串开头
语法:arr.startsWith(searchString[, position])
参数:searchString表示要检测的字符串,position表示开始搜索的位置,默认为0 - includes()方法
搜索字符串,判断一个字符串是否包含在另一个字符串中,返回一个布尔值
语法:arr.includes(searchString[, position])
2.4 Number
- toFixed()方法
对数字指定保留小数位数,整数也可以
语法:num.toFixed(指定保留的小数位数)
- toString()方法
数字型转换为字符串