class (类);
class Person{
constructor(){//构造函数中的属性
this.age=30;
}
say(name){// ===Person.prototype.say 原型中
console.log("你好:"+name+this.age)
}
}
// let p=new Person();
// p.say("Tom")
class Student extends Person{//一句话就已经继承 一旦继承子类没有this环境(作用域)要用super()继承父类的this
constructor(age){
super();
this.age = age;
}
}
let s = new Student(240000);
s.say("少时诵诗书")
reset
reset 运算符 ... (三个点)表示剩余参数
function fun(d,...a){//现在的...a就表示剩下的所有实际参数了
console.log(a,d,e)//打印所有的实际参数
}
fun(2,23,4,5,43,15,12)
...(还是三个点) 代表扩展运算符(这就比较尴尬了)
let arr=[2,3,4,5];
let arr2=[6,7,8]
console.log(arr.concat(arr2))//数组的普通融合方法
console.log([...arr,...arr2])//将两个数组融合为一个数组
//个人理解这里就相当于把一个数组扩展了包含了另一个数组
function foo(x,y,z){
console.log(x+y+z);//打印出来为6,
}
let arr3 = [1,2,3];
foo(...arr3)//也就是在这里面把数组切分了,传入了3个实参(1,2,3)
let s = new Set([1,2,3,3])//设置集合 不是数组
console.log([...s])//打印出来为数组 也就是将Set集合转为数组
promise
promise 承诺
用来传递异步操作的消息,代表未来才会知道的结果
三种状态:pending(进行中 在等待时间)
resolved(已解决的) 已完成
reject(驳回) 出现问题
***promise.all({promise1,peomoise2,......})全部异步函数执行完成后调用,以最慢的为准
***promise.race() 竞赛模式 以最快的为准 只返回最快结果
//ES5中
//用setTimeout替代一个异步执行的内容 比如:ajax
//不可预估返回结果时间
// function fun(callback){
// setTimeout(function(){
// console.log("异步一执行完成")
// callback("异步一给你的结果")
// },1000)
// }
// //回调函数
// fun(function(res){
// console.log(res);
// });
简单的的promise的例子
let promise =new Promise(function(resolve,reject){
// if (!true) {//表示成功
// resolve()
// }else{
// reject()
// }
// })
// promise.then(function(){
// console.log("成功")
// },function(){
// console.log("失败")
// })
这是一个复杂的多层回调的例子
function sync1(){
return new Promise(function(resolve,reject){
setTimeout(function(){
if (5>4) {
resolve("异步一大于")
}else{
reject("小于")
}
},1000)
})
}
function sync2(result){
return new Promise(function(resolve,reject){
setTimeout(function(){
if (true) {
resolve("异步二:true"+"---")
}else{
reject("异步二:false")
}
},2000)
})
}
function sync3(result){
return new Promise(function(resolve,reject){
setTimeout(function(){
if (true) {
resolve("异步3:true"+"---")
}else{
reject("异步3:false")
}
},2000)
})
}
运用es6里面的promise来实现回调函数
// sync1().then(function(res){
// console.log(abc)
// console.log(res)
// return sync2(res);
// }).then(function(r2){
// console.log(r2)
// return sync3()
// }).then(function(r3){
// console.log(r3)
// return "abc"
// }).then(function(r4){
// console.log(r4)
// return "def"
// }).then(function(r5){
// console.log(r5)
// }).catch(function(){
// //有错误直接进catch()里面
// //不会影响后面的异步的运行
// console.log("异常")
// });
下面是结合上面进行的测试promise.all()和promise.race()
// Promise.all([sync1(),sync2(),sync3()]).then(function(res){
// console.log(res)
// },function(){})
// Promise.race([sync1(),sync2(),sync3()]).then(function(res){
// console.log(res)
// },function(){})