前提准备:

 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源码 

posted on 2021-07-29 00:34  程序员草莓  阅读(40)  评论(0编辑  收藏  举报