目录
Object.assign():两个参数:复制/拷贝,三个参数:合并对象
Object.getPrototypeOf():获取原型对象
Object.setPrototypeOf():设置原型对象
Object.keys():获取属性名组成的数组,参数:目标对象
Object.values():获取属性值组成的数组,参数:目标对象
Object.entries():获取键值对(属性名和属性值)组成的数组,参数:目标对象
Array.of():创建数组,参数:数组元素,返回值:新数组
arr.find(): 参数:回调函数 返回值:返回第一个满足条件的元素
arr.findIndex():参数:回调函数,返回值:返回满足条件的第一个元素的索引或者-1
arr.fill():修改(填充)原数组,参数:填充的数组元素,返回值:填充好的新数组
ES6新特性
变量声明 let const
模块化 CommonJs ES6 AMD
包管理机制
babel转码
解构 数组解构 对象解构 字符串解构 数值解构 布尔值解构
对象简写
箭头函数
拓展运算符
对象静态API拓展
数组静态API拓展 实例方法拓展
类 继承
Symbol基本数据类型 表示独一无二的值
迭代器(for...of),set map集合(接收任意类型的键组成的键值对)
promise async
对象静态API扩展
Object.is():判断两个值是否相等
console.log(1===1); console.log(Object.is(1,1)); | true true |
console.log(+0===-0); console.log(Object.is(+0,-0)); | true false |
console.log(NaN===NaN); console.log(Object.is(NaN,NaN)); | false true |
Object.assign():两个参数:复制/拷贝,三个参数:合并对象
// 两个参数:目标对象 要复制的对象 // 返回值:目标对象 let obj={}; let obj1={ name:"zhangsan", age:12 }; let result=Object.assign(obj,obj1); console.log(obj); console.log(obj===result); | ![]() |
// 三个参数:目标对象 合并的对象1 合并的对象2 // 返回值:目标对象 let obj={}; let obj1={ name:"zhangsan" }; let obj2={ age:15 }; let result=Object.assign(obj,obj1,obj2); console.log(obj); console.log(result===obj); | ![]() |
Object.assign()实现深拷贝与半深拷贝
基本数据类型实现的是深拷贝 | 引用数据类型实现的是半深拷贝/浅拷贝 |
let obj = {}; let obj1 = { // 基本数据类型实现的深拷贝 name: "张三", age: 15, // 引用数据类型实现的是半深拷贝/浅拷贝 clazz: { number: 'web2201' } }; Object.assign(obj, obj1); // 深拷贝,互不影响 obj.name = '李四'; // 半深拷贝,影响 obj.clazz.number = 'web2202'; console.log(obj, obj1); | |
![]() |
Object.getPrototypeOf():获取原型对象
let obj={ name:"zhangsan" }; console.log(Object.getPrototypeOf(obj)); | ![]() |
console.log(obj.__proto__); | |
console.log(obj.constructor.prototype); |
Object.setPrototypeOf():设置原型对象
参数 :目标对象 设置的新原型对象 let obj={ name:"zhangsan" }; let obj1={ gender:'男', age:15 }; Object.setPrototypeOf(obj,obj1); console.log(obj.__proto__);//-->obj1 console.log(Object.getPrototypeOf(obj)); | ![]() |
Object.keys():获取属性名组成的数组,参数:目标对象
Object.values():获取属性值组成的数组,参数:目标对象
Object.entries():获取键值对(属性名和属性值)组成的数组,参数:目标对象
let obj={ name:"zhangsan", age:12, gender:'男' }; console.log(Object.keys(obj),'返回属性名组成的数组'); console.log(Object.values(obj),'返回属性值组成的数组'); console.log(Object.entries(obj),'返回键值对组成的数组'); | ![]() |
数组静态方法和实例方法API扩展
静态方法,构造函数调用
Array.of():创建数组,参数:数组元素,返回值:新数组
//10不再是长度,是数组元素 let result = Array.of(10); //创建数组长度为10的数组 var arr = new Array(10); console.log(result, arr); | ![]() |
实例方法,从原型对象中调用
arr.find(): 参数:回调函数 返回值:返回第一个满足条件的元素
let arr1 = [1, 3, 2, 3, 2]; let result2 = arr1.find((item) => { return item > 2 }); console.log(result2); | 3 |
arr.findIndex():参数:回调函数,返回值:返回满足条件的第一个元素的索引或者-1
let arr2 = [1, 2, 3, 4, 5]; let result3 = arr2.findIndex((item) => { return item > 3 }); console.log(result3); | 3 |
arr.fill():修改(填充)原数组,参数:填充的数组元素,返回值:填充好的新数组
let arr3 = [1, 2, 3, 4]; let result4 = arr3.fill(8); console.log(result4); console.log(arr3); | ![]() |