-
Es6数字新增方法?
-
Array.from()
-
Array.of()
-
find( )
-
fill( )
-
for…of
-
entries( )
-
copyWithin
-
findIndex()
-
includes()
-
reduce()
-
map()
-
Filter()
-
-
Es6对象新增方法
-
Object.is()、
-
Object.assign()、
-
Object.getOwnPropertyDescriptors()、
-
Object.setPrototypeOf(),
-
Object.getPrototypeOf()、
-
Object.keys(),
-
Object.values(),
-
Object.entries()
-
-
Es6字符串新增方法
-
includes()
-
startsWith()
-
endsWith()
-
replace
-
Repeat
-
Search
-
-
Es6新增特性概述
-
扩展运算符
-
函数默认参数
-
-
Map数据类型
-
Map和Object有点类似,都是键值对来存储数据,和Object不同的是,JavaScript支持的所有类型都可以当作Map的key
-
-
Set数据类型
-
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
-
-
ES6 Promise 对象
-
是异步编程的一种解决方案。
-
从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。
-
Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。除了异步操作的结果,任何其他操作都无法改变这个状态。
-
Promise 对象只有:从 pending 变为 fulfilled 和从 pending 变为 rejected 的状态改变。只要处于 fulfilled 和 rejected ,状态就不会再变了即 resolved(已定型)。
-
状态的缺点:无法取消 Promise ,一旦新建它就会立即执行,无法中途取消。
-
-
async和await
-
用于声明异步函数,返回值为一个 Promise 对象,它以类似 同步 的方式来写异步方法。
-
wait 必须在 async function 内使用,否则会提示语法错误;如果 await 后面跟的是其他值,则直接返回该值:
-
Async和await是promise的语法糖
-
-
Es6的模块化
-
使用import导入,export导出
-
浏览器加载ES6模块,使用<script>标签,但是要加入type="module"属性。
-
称之为ES6 Module
-
封闭的作用域:代码是在模块作用域之中运行,而不是在全局作用域运行。模块内部的顶层变量,外部不可见
-
模块脚本自动采用严格模式,不管有没有声明use strict
-
模块之中,可以使用import命令加载其他模块(.js后缀不可省略,需要提供绝对 URL 或相对 URL),也可以使用export命令输出对外接口
-
模块之中,顶层的this关键字返回undefined,而不是指向window。也就是说,在模块顶层使用this关键字,是无意义的
-
同一个模块如果加载多次,将只执行一次
-
-
Ajax
-
Ajax 全称“Asynchronous JavaScript and XML”,译为“异步 JavaScript 和 XML”,程序员们习惯称之为“阿贾克斯”,它并不是一种技术,而是多种技术的综合体,其中包括 JavaScript、XML、JSON、DOM、CSS、HTML 以及最重要的 XMLHttpRequest 对象。通过 Ajax 可以异步从服务器请求数据并将数据更新到网页中,整个过程不需要重载(刷新)整个网页,可以将网页的内容更快的呈现给用户。
-
Ajax 的工作原理
-
JavaScript 需要使用浏览器内置的 XMLHttpRequest 对象向服务器发送 HTTP 请求,并接收服务器响应的数据。
-
目前,所有的浏览器(Chrome、Firefox、IE7 及以上版本、Safari、Opera 等)都支持 XMLHttpRequest 对象。所以兼容性非常好
-
-
5个步骤
-
创建 XMLHttpRequest对象:var ajax = new XMLHttpRequest()
-
规定请求的类型、URL 以及是否异步处理请求:ajax.open('GET',url,true)
-
发送信息至服务器时内容编码类型:ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded")
-
发送请求:ajax.send();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && (ajax.status == 200 || ajax.status == 304)){
Console.log(ajax.response)
}}
-
接受服务器响应数据
-
-
-
节流与防抖
-
防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
-
节流:规定在一个单位时间内,只能触发一次函数。如果这个函数单位时间内触发多次函数,只有一次生效。
-
它们都是用来节省性能开销的手段,都是基于闭包实现的。
-
.ES6字符串方法
includes()**:返回布尔值,判断是否找到参数字符串。
- **startsWith()**:返回布尔值,判断参数字符串是否在原字符串的头部。
- **endsWith()**:返回布尔值,判断参数字符串是否在原字符串的尾部。
- **repeat()**:返回新的字符串,表示将字符串重复指定次数返回。
- **padStart(length,newStr)**:返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串。
- **padEnd(length,newStr)**:返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串。
- 模板字符串
. 可迭代数据类型
Array
String
NodeList 节点列表
新增方法
- forEach
- map
- filter
- some every
- reduce
- find
- findIndex
- includes
- arr.keys
- arr.values
- arr.toString()
- Array.from
Map数据类型
- map与Object非常类似
- map与Object的最大区别是:map的key可以是任何数据类型,object的可以只能是字符串
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。**
- **深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。**
// var obj = {uname:"张三"}
// Object.defineProperty(obj,"aeg",{
// value:21,
// enumerable:true , //是否可枚举 是否可遍历
// writable:true, //是否可写
// configurable:true //属性是否可删除
// })
// // console.log(obj);
// // obj.age=30
// // console.log(obj);
// //检测是否能删除
// delete obj.age
// console.log(obj);
// for (k in obj){
// // console.log(k);
// console.log(obj[k]);
// }
// isfreeze() 冻结 可读 不可写
// var obj = {uname:"湖北",age:5000}
// Object.freeze(obj)
// console.log(obj);
// obj.uname="襄阳"
// obj.age=2000
// console.log(obj);
// isFrozen 检测是否是冻结
// var result = Object.isFrozen()
// console.log(result);
Object.assign () //通过复制一个或多个对象来创建一个新的对象。
```js
var obj1 = { uname: "张三", age: 12 }
var obj2 = { school: "积云教育", address: "海淀" }
//合并对象
// var result = Object.assign(obj1, obj2)
// console.log(result)
// console.log(obj1)
```
- Object.create () //使用指定的原型对象和属性创建一个新对象。
- Object.defineProperty () //给对象添加一个属性并指定该属性的配置。
- Object.defineProperties () //给对象添加多个属性并分别指定它们的配置。
- Object.entries () //返回给定对象自身可枚举属性的 [key, value] 数组。
- Object.freeze() //冻结对象:其他代码不能删除或更改任何属性。
// isfreeze() 冻结 可读 不可写
// var obj = {uname:"湖北",age:5000}
// Object.freeze(obj)
// console.log(obj);
// obj.uname="襄阳"
// obj.age=2000
// console.log(obj);
- Object.getOwnPropertyDescriptor() // 返回对象指定的属性配置。
- Object.getOwnPropertyNames() // 返回一个数组,它包含了指定对象所有的**可枚举或不可枚举**的属性名。
- Object.getOwnPropertySymbols() // 返回一个数组,它包含了指定对象自身所有的符号属性。
- Object.getPrototypeOf() // 返回指定对象的原型对象。
- Object.is() // 比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。
- Object.isExtensible() //判断对象是否可扩展。
- Object.isFrozen() //判断对象是否已经冻结。
// isfreeze() 冻结 可读 不可写
// var obj = {uname:"湖北",age:5000}
// Object.freeze(obj)
// console.log(obj);
// obj.uname="襄阳"
// obj.age=2000
// console.log(obj);
// isFrozen 检测是否是冻结
// var result = Object.isFrozen()
// console.log(result);
- Object.isSealed() // 判断对象是否已经密封。
- Object.keys()
- Object.values()