1、Array构造函数传入的参数类型和个数会影响结果
new Array(1) 返回 []
new Array('1') 返回 ['1']
new Array(1,'1') 返回 [1,'1']
Array.of() 不管传入什么 都作为成员
Array.from(arr,fn,this) 将 arr 用 fn 迭代 fn 中的 this 由于 第三个参数this 指定 返回一个数组 用于将一个可迭代对象变成数组
find(fn) 返回符合fn 的第一个元素
findIndex(fn) 返回符合fn 的第一个元素 的索引
fill(item,start,end) 将 item 填充到 [start,end) 位置
copyWithin(开始粘贴位置,开始复制位置,复制结束位置) 将 [开始,结束) 中的值复制 从 开始粘贴位置覆盖
定型数组 就是存储的元素是一个类型的数组
数组缓冲区 一段内存
视图 将这一段内存的值的映射 按照一段段的 放到数组中
视图就是一个定型数组 可以读取其中的一个或者多个元素
特定类型的视图 就是只能读取固定位数的元素的数组
定型数组有些和普通数组同名并且表现相同的方法 迭代器的表现相同
定型数组没有改变数组本身空间大小的方法
定型数组 有 set(arr,start) 方法 将 start 位置开始 用 arr 覆盖
2、promise将嵌套的回调用函数.then() 铺开
promise有未完成和已完成两种状态
已完成状态包含 成功 和 失败
new Promise((成功回调,失败回调)=>{}) 创建一个未完成的
Promise.resolve() 创建一个已经成功完成的 用来将实现 .then接口的对象包装成一个 Promise对象
promise报错后 如果没有定义 失败回调 就捕获不到异常
promise.then(成功,失败)
promise.catch(失败) 可以捕获异常
unhandledRejection 事件 捕获本次时间循环的异常
rejectionHandled 事件在下一轮事件循环执行
串联 promise中可以返回新的promise 然后 在用 .then() 就可以声明新的promise的成功和失败逻辑
并联 Promise.all(promise,promise).then([result1,result2]=>{}) 多个promise全部执行完后 获取全部结果
并联 Promise.race(promise,promise).then(result=>{}) 多个promise中只要有一个完成 就返回它的结果
3、代理 就是在用户和目标中间加个中间人
在代理给对象配置相应的行为对应的钩子 在钩子中判断要不要将这个行为在目标对象上执行 如果要执行就调用这个钩子对应的反射 让反射去操作目标对象做动作
4、模块化 区别于脚本 javascript 只要不是模块的都是脚本
模块有自己的作用域 有入口有出口 入口导入别的模块 出口暴露成员给别的模块导入
export let xxx 导出 xxx 导入的时候 要 写成 import {xxx} from './xxxx.js'
export default let yyy 导出 yyy 导入的时候要写成 import yyy from './xxxx.js'
如果 两种导出都有 那么导入的时候要写成 import yyy,{xxx} from './xxxx.js' 来分别取到导入的值
导入的值相当于常量 不能修改
如果 模块是用来修改全局变量的 比如 Array对象的原型 导入的时候不一定要获得变量 import './xxxx.js' 执行就行
在浏览器中 用 '<script type="model" src="xxxx.js"></script>' '<script type="model" >模块代码段</script>' 来使用模块,默认是defer的 同步顺序执行 改成async 后可以不安顺序执行 但如果有依赖别的模块的化 不管是defer 还是 async 都要等依赖的所有模块都加载完成 才会执行