小复习----jQuery的深浅拷贝/钩子函数/多库并存、闭包及优缺点、ES5/ES6继承语法

jQuery
    深浅拷贝 (重点)
        浅拷贝 : 复制拷贝的是,引用数据类型的地址
                    两个变量之间,是有相互关联的
                    一个改变,另一个也会受影响

        深拷贝 : 复制拷贝的是,引用数据类型的数据数值
                    两个变量之间,是没有相互关联的
                    一个改变,另一个不会受影响

        $.extend(参数1,参数2,参数3.....)

        参数1: 使用 jQuery 封装的方法,进行拷贝
                第一层默认执行的是 深拷贝 
                第二层甚至更多,是通过第一个参数来设定,是否执行深拷贝
                默认值是 false 不进行深拷贝
                设定值是 true  进行深拷贝

        参数2: 写入的对象或者数组

        参数3以及以后的参数: 参数2,之后所有的参数数据,都会拷贝到 参数2 中
                            拷贝的方式,由参数1 来设定,是深拷贝,还是浅拷贝

    钩子函数
        与 jQuery 中 ajax 请求 相互关联的
        根据 ajax 请求,执行的不同阶段,不同步骤,触发不同的钩子函数
        框架中也有 相关的 钩子函数 用法意义是相同的,只是语法形式不同

        $(window).ajaxStart(function(){})          在第一个ajax请求开始之前会触发,只触发一次
        $(window).ajaxSend(function(){})           在每一个ajax请求发送之前会触发,触发多次
        $(window).ajaxSuccess(function(){})        在每一个ajax请求成功之后会触发,触发多次
        $(window).ajaxError(function(){})          在每一个ajax请求失败之后会触发,触发多次
        $(window).ajaxComplete(function(){})       在每一个ajax请求结束之后会触发,触发多次
        $(window).ajaxStop(function(){})           在每一个ajax请求都结束之后会触发,只触发一次

        $.ajax({});
        $.get({});
        $.post({});

    多库并存
        jQuery 设定 通过 $ 或者 jQuery 来代用设定的函数方法
        如果与其他js文件设定的方法相互冲突,jQuery会交出控制权
        语法方式1:   $.noConflict()     jQuery.noConflict()
                    都是 交出 $ 标识符 的控制权
                    保留 jQuery 表示符 的控制权

        语法方式2:   $.noConflict(true)     jQuery.noConflict(true)
                    都是 交出 $ 和 jQuery 标识符 的控制权

        语法形式3:   声明 变量 = $.noConflict(true)     声明 变量 = jQuery.noConflict(true)
                    定义变量 为 jQuery 新的 标识符 
                    可以通过新的标识符,来获取 jQuery 的函数方法


闭包

    闭包是 js 中函数的一种高级应用方式
    在程序的执行过程中,为了防止 全局变量污染 我们会将变量,定义在 函数中,设定为局部作用域变量/私有变量
    变量声明在函数中,无法直接调用和使用,必须要通过 闭包的形式 来获取变量的数据

    了解函数的执行过程
        函数存储在内存空间中
        执行函数时,会在 内存空间中 开辟一个执行空间
        函数的执行,变量的定义,都在执行空间中完成
        当函数执行结束时,执行空间被销毁
    
    完成闭包的三个条件
        1,要有一个不被销毁的执行空间
            函数A中返回值是一个引用数据类型:一般是函数B,少数是数组,对象
            在函数B中调用使用函数A中的变量
            在函数外部,存储函数A的执行结果
        2,函数的返回值要是引用数据类型
        3,在函数外部有变量存储函数的执行结果

        function a(){
            let int = 100;
            return function b(){
                let int2 = int;
            }
        }

        let a = a();

    闭包的优点和缺点
        1, 函数,执行空间不会被销毁
            优点: 空间中的内容,永远存在
            缺点: 会占用大量的内存空间
        
        2, 可以从函数外部调用,使用函数内部的数据
            优点: 调用数据更加方便
            缺点: 容易泄露数据信息,不安全

        3, 保护私有变量
            优点: 私有变量,不会被销毁
            缺点: 私有变量存储占用空间


继承
    构造函数的高级应用
    优化代码,防止重复冗余的代码产生

    子级构造函数,从父级构造函数,继承属性和方法,防止重复冗余代码的产生

    ES6的继承语法
        通过两个关键词来完成继承

        extends 指定继承的父级构造函数
        super   在 constructor构造器中 指定继承的属性

        方法直接是指向 父级构造函数 prototype 中定义的方法

        class 子级构造函数 extends 父级构造函数{
            constructor(属性....){
                super(继承的属性);
            }
        }

    ES5的继承语法
        语法1: 原型继承
            通过原型链,将子级构造函数和父级构造函数关联起来
            两个构造函数,无法直接关联,通过父级构造函数,生成的实例化对象来完成关联
            在子级构造函数 prototype 中 添加 父级构造函数,生成的实例化对象

            子级构造函数.prototype = new 父级构造函数();

        语法2: 通过构造函数继承
            只能继承属性
            通过 call 语法,改变父级构造函数的this指向,为子级构造函数的this指向

            function 子级构造函数(){
                父级构造函数.call(this,父级构造函数的实参);
            }

        语法3: 组合继承
            将 原型继承 和 构造函数继承,结合起来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值