获得徽章 0
JS中数据类型的判断方式
1. typeof(操作数):将操作数的类型返回,以字符串的形式表示。
- 无法详细区分Object的详细类型(Array/Date/Null)
2. instanceof 判断A是否为B的实例
- 原理:监测左侧的__proto__原型链上是否存在右侧的prototype原型
3. constructor:表示原型对象与构造函数间的关联关系。可以得知某个实例对象到底是由哪个构造函数产生的。
- 可用于判断Object的详细类型。
- 跨框架无效,因为prototype属性在不同框架间无法共享。
- 将公用的方法或对象放置在原型对象上,避免每次创建对象时对相应的方法或对象进行重复添加。
- 不可以判断Null和Undefined,因为其无constructor。
4. Object.prototype.toString.call(A)
- Object的原型方法,封装了一个准确判断数据类型的函数。
- 可解决跨框架问题。展开评论点赞- Generator生成器
1.1.生成器就是在普通函数名称与function关键字之间的任意位置标记一个“*”表示该函数是一个生成器。
1.2.生成器执行会返回一个Generator对象,也可以视该对象为一个Iterator,因为该对象同样可以被迭代。
1.3.生成器执行生成一个Generator对象的时候迭代器内部代码不会执行,而是需要通过对象调用next()方法才会执行内部代码。
1.4.Generator对象调用next()方法基于yield关键字迭代执行,next()方法第一次执行是从头开始执行到第一个yield的右侧代码,yield左侧代码会等到下一个next()调用才会执行。当所有yield关键被迭代完成以后,最后一个next()方法返回的对象中done属性值为true,表示该Generator被迭代到最末尾处。
1.5.被yield截断的表达式除了作为阻断代码执行的作用以外,yield关键字同时充当了表达式右侧代码的return功能,将右侧代码执行结果作为当前next()方法的返回值;yield关键还充当了左侧代码被next()调用时接收参数的功能。(yield关键之应该很容易理解,它的功能就是截断程序执行,并且通过返回值和接收参数的方式连接被截断的程序)
1.6.yield作用的return特性其返回值最后会被next()方法返回的对象中的value属性获取。展开评论点赞 - Promise中的类方法/静态方法:
- promise.resolve()=new Promise((resolve,reject)=>resolve());
- promise.reject()=new Promise((resolve,reject)=>reject());
- 当预知结果为resolve或reject时可采用该方式。
- Promise.all([Promise1,Promise2,Promise3]).then(res=>()):all方法传入一个可迭代对象,当状态全部为resolve时执行后续的then方法。若存在任何一个对象状态为rejected,则会回调.catch方法。
- Promise.allSettled:只有当可迭代的所有Promise都有结果时会返回所有的值
- Promise.race:优先获取第一个返回的结果
- Promise.any:只获取第一个状态为fulfilled的结果 若全为rejected则会报错。展开评论点赞