js中闭包,异常,指向

闭包:
    1、内嵌函数(访问到自由变量)
    2、依赖作用域链的运行机制
    3、自由变量永久保存在内存中
    自由变量

    使用场景:
    1、访问函数内部的变量
    2、对象的私有属性
    3、循环取值
    4、函数 方法封装 参数注入
    5、事件防抖

    bug:频繁、重复的触发事件。
    下拉加载:window.onscroll = function(){

    }

    优点:
    2、私有的对象属性
    缺点:
    1、内存损耗过大
    2、内存泄漏

    垃圾回收机制:
    gc机制


js异常:
    常见的异常:
    rangeError:

    抛出、捕获异常:
    Error():构造函数
    throw obj
    var obj = new Error();

    try{

    }catch(msg){

    }

    this 关键字:当前对象
    this 直接无法使用?
    this 的指向以【最终】驱动的对象为主。obj.fn()

    自定义函数中:                  this--------> window
    构造函数:                      this-------->当前实例对象
    dom事件函数                     this-------->当前节点对象
    普通对象、json对象               this-------->当前对象
    定时器函数(function(),100)       this---->window
    
指向:
改变是指向:
 1、变量替换
 2、箭头函数

基于函数(function)调用:
    function.call(obj,args,args2...)    即时调用函数,基于继承,参数都是单个变量
    function.apply(obj,[args,args2...]) 即时调用函数,基于深拷贝,参数都是数组
    function.bind(obj,arg1,arg2...)     非即时调用,基于深拷贝,参数都是单个变量
构造函数:?
    function:构造函数
    # 自定义函数
    function hello(){

    }
    hello();
    # 构造函数:构造对象
    function Person(){

    }
    var obj = new Person()

    系统内置:
    Array() ---->   [] new Array()
    Object()---->   {} new Object()
    String()  包装类 ---->   var str = "asdfghj" length split() new String("sdfsdf")
    Number()  包装类
    Boolean() 包装类
    set()
    ....
    包装类:将一些普通数据类型转换为对应数据类型
    var str = new String(err)
    字符串转数字:
    "123abc"
    pasreInt()
    parseFlost()
    var num = new Number(str)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值