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: 组合继承
将 原型继承 和 构造函数继承,结合起来
小复习----jQuery的深浅拷贝/钩子函数/多库并存、闭包及优缺点、ES5/ES6继承语法
最新推荐文章于 2022-10-30 09:06:11 发布