实例对象与函数对象,回调函数,错误处理

219 阅读1分钟

区别实例对象与 函数对象

  1. 实例对象:new 函数产生的对象,称为实例对象,简称为某某对象
  2. 函数对象:将函数作为对象使用时,简称函数对象
function Fn(){} //Fn函数
const fn = new Fn()// Fn是构造函数 fn是实例对象(简称对象)
console.log(Fn.prototype) Fn是函数对象
Fn.call({})// Fn是函数对象  fn
$("#test") // jQuery 函数
$.get('/get') //jQuery函数对象

二种类型的回调函数

  1. 同步回调
    1. 立即执行,完全执行完了才结束,不会放入回调队列中
    2. 例如: 数组遍历相关的回调函数/Promise的excutor函数
    const arr = [1,2,3];
    arr.map(item => { //遍历的回调,同步回调函数,不会放入队列,直接执行
        console.log(item);
    })
    console.log('map遍历之后')
    
  2. 异步回调
    1. 不会立即执行,会放入回调队列中将来执行
    2. 例如:定时器回调 / ajax回调 / Promise的成功|失败的回调
    setTimeout(()=>{ //异步回调函数,会放入队列中
        console.log('timeout callback')
    })
    console.log('setTimeout之后')
    

js的错误处理

  1. 错误的类型(常见的)
    1. Error:所有错误的父类型
    2. ReferenceError:引用类型不正确的错误
    3. TypeError:数据类型不正确错误
    4. RangeError:数据值不在其所允许的范围内
    5. SyntaxError:语法错误
  2. 错误处理
    1. 捕获错误 try ... catch
    try{
        let d
        console.log(d.xxx)
    }catch(error){
        console.log(error.message)
        console.log(error.stack)
    }
    
    1. 抛出错误 throw error
    function fn(a){
       if(a%2 === 1){
           //执行任务
       }else{
           //抛出错误
           throw new Error('当前a为偶数,请处理')
       }
    }
    
    try{
       fn(2)
    }catch(error){
       console.log(error.message)
    }
    
    
  3. 错误对象
    1. message属性:错误相关信息
    2. stack属性:函数调用栈记录信息