形参默认值
*形参的默认值——————当不传入参数的时候默认使用形参里的默认值
function Point(x = 1,y = 2){
this.x = x;
this.y = y;
}
Promise对象
1、理解:
*Promise对象:代表了未来某个将要发生的时间(通常是一个异步操作)
*有了promise对象,可以将异步操作以同步的流程表达出来,避免了层层嵌套的回调函数(俗称"回调地狱")
*ES6的promise是一个构造函数,用来生产promise实例
2、使用promise对象
*创建promise对象
let promise = new Promise((resolve,reject)=>{
初始化promise状态为pending
执行异步操作
if(异步操作){
resolve(value);//修改promise的状态为fullfilled
}else{
reject(errMsg);//修改promise的状态为rejected
}
})
*调用promise的then()
primise.then(function(
result=>console.log(result),
errorMsg =>alert(errorMsg)
))
3、promise对象的3个状态
*pending:初始化状态
*fullfilleed:成功状态
*rejected:失败状态
4、应用
*使用promise实现超时处理
*使用promis封装处理ajax请求
let request =new XMLHttpRequest();
request.onreadystatechange = function(){
}
request.responseType="json"
request.open('GET',url)
request.send();
async函数(源自ES2017)
概念:真正意义上去解决异步回调的问题,同步流程表达异步操作
本质:Generator的语法糖
语法:
async function foo(){
await 异步操作;
await 异步操作;
}
特点:
1、不需要像Generator去调用next方法,遇到await等待,当前的异步操作完成就往下执行
2、返回的总是Promise对象,可以用then方法进行下一步操作
3、async取代Generator函数的星号*,await取代Generator的yield
4、语意上更为明确,使用简单,经临床验证,暂时没有任何副作用
class
1、通过class定义类/实现类的继承
2、在类中通过constructor定义构造方法
3、通过new来创建类的实例
4.通过extends来实现类的继承
5、通过super调用父类的构造方法
6、重写从父类中继承的一般方法
字符串扩展
1、includes(str):判断是否包含指定的字符串
2、startsWith(str):判断是否以指定字符串开头
3、endsWith(str):判断是否以指定字符串结尾
4、repeat(count):重复指定次数
数值扩展
1、二进制与八进制数值表示法:二进制用0b,八进制用0o
2、Number.isFinite(i):判断是否是有限大的数
3、Number.isNaN(i):判断是否是NaN
4、Number.isInteger(i):判断是否是整数
5、Number.parseInt(str):将字符串转换为对应的数值
6、Math.trunc(i);直接去除小数部分
数组扩展
1、Array.from(v):将伪数组对象或可遍历对象转换为真数组
2、Array.of(v1,v2,v3):将一系列值转换成数组
3、find(function(value,indexm,arr){return true}):
找出第一个满足条件返回true的元素
4、findIndex(function(value,index,arr){return true}):
找出第一个满足条件返回true的元素下标
对象扩展
1、Object.is(v1,v2)
*判断2个数据是否完全相等
2、Object.assign(target,sourcel,source2..)
*将源对象的属性复制到目标对象上
3、直接操作__proto__属性
let obj2={};
obj2.__proto__=obj1;
ES7
1、指数运算符(幂);**
2、Array.prototype.includes(value):判断数组中是否包含指定value
Vue
1、引入Vue.js
2、创建Vue对象
el:指定根element(选择器)
data:初始化数据(页面可以访问)
3、双向数据绑定:v-model
4、显示数据:{{xxx}}
5、理解vue的mvvm实现
网友评论