前提准备:
1. 区别实例对象和函数对象
1 Function Fn(){}; 大写的默认是构造函数。
const fn = new Fn(); 加new调用,Fn被称为:构造函数。fn被称为:实例对象(对象)
括号左边是函数。点的左边是对象。
2 Fn.call(); Fn是函数对象
$('#test') jq实例函数。
$.get('/test');jq函数对象。
a.b.c()。 a()[0]()。括号左边肯定是个函数。[]中括号左边就是数组。
2. 两种类型的回调函数。
回调函数定义:
1 是我定义(setTimeout就不是)。2 我没有调。函数+()就是执行。3会执行。
2.同步回调:
arr.forEach( item => { console.log(item)} )
console.log(arr)
=>{}同步回调函数。
3.异步回调:
setTimeout( () =>{console.log('')},0)
console.log('1');
=>{}异步回调函数,放在队列中来执行
3. JS的error处理
1.错误类型: Error:所有错误的父类型
1. ReferenceError:引用的变量不存在。reference引用。console.log(a)
2.TypeError:数据类型不正确的错误。 consloe.log(undefine.xxx);cannot read property 'xx' of undefind; 不能读取underlifin的属性xx。
3.RangeError:function fn(){};递归调用。会产生死循环。Max
4.Syntax 语法错误。
2.
捕获错误:try catch
抛出错误:throw error。系统通知的方式。
2.错误处理
3.错误对象
二。promise使用
1抽象理解: promise是什么JS异步编程的解决方法(之前的方案是什么呢?)
2 具体表达:语法上promise是一个构造函数。功能上:promise对象可以封装一个异步操作,并且异步操作的获取结果。
2+2+1
2 个问题超过面试官的准备。2 个和其他人差不多。1 个啥也不知道。
只有这两种,且一个promise对象只能改变一次。
无论成功还是失败,都会有一个结果数据。
成功的结果成为:value,失败的结果成为reason(原因)。
Promise(pedding状态)-》执行异步操作-》成功了,执行resolve()函数,-》promise对象(resolved)-》then(回调onResolved) -》新的primise
-》失败了,执行reject()函数 -》promise对象(rejected)-》then,catch(回调onRejected()) -》新的primise.
1 new Promise()本身就是构造函数,但是里面必须传入一个执行器函数,执行器函数用来执行异步操作,这就是设计promise初衷。
2 然后执行异步操作。
3 如果成功调用resolve(),如果失败调用reject()。
4 then去做回调!!!
p.then(
value=>{接受得到成功的数据,不是主动的取,},//
reason=>{接受得到失败的数据}
)
2 为什么
3 如何用
讲课:学习任何技术需要成为,在学习之前要想清楚为什么。如果是因为面试和工作,那么必须强迫自己记忆。
语法:
4步:
3状态:pedding,res,rej
2方法。 成功res,失败rej。。
1异步。setTimeout
0构造器。()=>{ }。
1各构造器。
2 各参数。
3 一个异步函数+2个方法。
4.then回调。
1 promise优势特点。2 primise使用。做题。3 promise特殊问题 4 promise源码