Generator 函数
1、es6解决异步编程的方案之一
2、generator 函数是一个状态机,内部封装了不同状态的数据
3、用于生成遍历器对象
4、可暂停函数(惰性求值),yield可暂停,next方法可以启动,每次返回的是yield 后
表达式的结果,
特点:function 与函数名之间有一个 *
内部用yield表达式来定义不同的状态(类似于next需要遍历的对象)
function * generatorExample(){
let result = yield 'hello' //状态为hello 指定返回值 result 输出为undefined
yield 'generator' //状态为generator
}
3、generator 函数返回的是指针对象,而不会指向函数内部的逻辑
4、调用next方法才会执行函数内部的逻辑 =>遇见 yield就会停止,
返回:{value:yield后面的表达式结果/undefined done}
5、再次调用next方法会从上一次的停止的yield开始执行,知道最后
6、yield语句最后执行结果返回通常为undefined 当调用next方法时,
传参内容会作为启动时yield语句的返回值(就是yield 后的语句会作为返回值返回=>语句执行返回)
eg:
function * myGenerator(){
console.log('函数开始执行')
yield:'第一个yield被执行了'
next后就停在这条语句=>let result = yield 'hello'
console.log(result) //yield 默认返回的就是 => undefined
(next函数会作为上一次暂停的yield语句开始启动,为启动时的yield语句指定返回值的属性名)
yield:'第二次调用可以传入next()参数 作为result的属性名'
=>next(reslutName) //resultNmae:'hello'
}
let mg = Generator() //返回指针对象
//并没有执行 =>console.log('函数开始执行')
console.log(mg.next()); //函数开始执行 + 第一个yield被执行了
console.log(mg.next()); //执行到一下一个yield属性停止
console.log(mg.next()); //执行完最后一个yield
console.log(mg.next()); //再次执行next 函数返回 value:undefined
done:true
class:
1、通过calss定义类/实现类的继承==>面向对象编程
2、在类中通过constructor定义构造函数
3、通过new来创建类的实例
4、通过extends来时先类的继承
5、通过super调用父类的钩爪方法
6、重写父类的方法,满足自身的需求(父类向上抽出的公共类型=>extend时为了更详细描述对象)
class myClass{
//类的构造方法
constructor(name,age){
this.name= name;
this.age = age;
}
//类的一般方法
getName(){ //使用class声明必须使用 函数的简写方式(存放在原型)
console.log(this.name) //方法添加的到的时原型上,this(谁调用this就指向谁)
}
}
let person = new myClass('tianze',18);
person.getName() // tianze
//继承
class stdent extends Myclass{
constructor(name,age,sex){ //==>构造函数
super(name,age) //调用父类的构造方法
this.sex = sex;
}
}
let student = new student('tianze1',19,'男')
student.showName()//tianze1
字符串的扩展:
includes(str) //判断是否包含字符串 =>返回Boolean
startWith(str) //判断是否以指定字符串开头=>返回Boolean
endWith(str) //判断是否以指定字符串结尾=>返回Boolean
repeat(str) //重复指定次数 =>返回Boolean
数值的扩展:
二进制、八进制的表示 二进制用0b 八进制用0o
Number.isFinite(i) 判断是否有最大的数
Number.isNaN(i) 判断是否是NaN
Namber.isInteger(i) 判断是否是整数
Number.parseInt(str) 将字符串转化为对应的数值
Math.trunc(i) 直接去除小数部分