自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 JavaScript的继承

在子类构造函数中,使用父类的构造函数,同时改变父类函数的this指向,因为在子类构造函数里,父类构造函数的普通函数的调用,this指向的是window,这样创建一个子类实例的话,Person函数的属性写到了window上了,要使用call或者apply函数临时改变Person方法的this指向,使其指向当前Student指向的实例,这样Person方法就只是一个普通的方法,在Student函数中执行,就可以使新创建的Student实例有Person的属性和方法了。如果数量多起来后,非常影响浏览器的性能。

2023-07-17 21:13:47 42 1

原创 JavaScript的闭包函数

令makeCounter 等于 一个自执行函数,使其直接等于这个函数的返回值(闭包函数),闭包函数是一个对象,对象里面有多个方法,可以访问外部函数的方法,但因为是自执行函数,没有变量引用这个方法,所以无法使用函数内的changeBy方法,相当于只能通过闭包函数来使用这个方法,这就模拟了一个私有方法,只能内部的闭包访问changeBy方法,其他人无法访问。在实际应用场景中,函数输入的参数有可能有一部分是相同的,其他的才需要多次输入参数,我们可以使用函数柯里化,将一部分参数固定,减少参数的定位和赋值。

2023-07-16 20:07:18 1064 1

原创 JavaScript的防抖和节流

在flag为true的时候,执行下面的代码,打印Hello,然后设置定时器,3秒后flag=true,在此期间内执行return null的操作,也就是直接返回,不执行打印函数。使用闭包函数作为输入处理事件,timer是闭包函数对上层函数的私有变量的引用,timer是共享的,闭包函数操作的都是同一个timer,每次触发事件都会清除上一个的定时器,重新计时。在事件触发的n秒后执行函数,若在n秒内再次触发事件,就重新计时,如果在n秒内多次触发事件,会在最后一次事件开始计时,n秒后触发。

2023-07-16 13:37:51 133 1

原创 JavaScript正则表达式

= {n,m}: 匹配前面的字符至少 n 次,最多 m 次 , 注意,当匹配”caaaaaaandy“时,匹配的值是“aaa”,即使原始的字符串中有更多的 a。或 {} 的后面,将会使量词变为非贪婪。== [] :字符集合,表示写在[]里面的任意一个都行 [a-z] 匹配a到z的所有字符中的一个。== [^] :反字符集合,表示写在[] 里面之外的任意一个都行 [^0-9] 匹配一个除了0-9之外的所有字符。== {n,} : n 是一个正整数,匹配前一个字符至少出现了 n 次 ,

2023-07-13 22:50:54 41 1

原创 原型和原型链

原型的出现是为了解决构造函数添加方法的缺点,每次都开辟新的内存空间造成内存浪费,我们可以在构造函数创建完成后将方法插入到原型中,因为new操作符帮我们在每次创建一个实例对象的时候将实例对象的prototype指向构造函数的prototype,这样实例对象和构造函数就能共享同一个prototype,就不用在构造函数里面写方法,避免每次创建实例对象都重复创建相同的方法,每次都开辟新的内存空间造成内存浪费。换句话说,原型链:从实例对象开始沿着__proto__形成的连式结构就是这个实例对象的原型链。

2023-07-12 20:03:16 36 1

原创 JavaScript检测数据类型

Object.prototype.toString.call(要检测是数据类型),这个js方法可以准确的识别所有的数据类型,无论是简单数据类型,还是复杂数据类型,Object.prototype.toString.call()方法都可以准确识别出所有的数据类型。数据类型分为基本数据类型(Number,String,boolean,undefined,null)和复杂数据类型(Object,正则,Set,Map,数组,时间戳等),除了基本数据类型这几个外,其他全部都是复杂数据类型。3.万能检测数据类型。

2023-07-11 21:55:53 28

原创 Set类型和Map类型

set和map都是es6新增的数据结构,其中set是一个类数组结构,值是唯一的,没有重复的。map类似于对象,也是键值对的集合,但是键的类型范围不局限于字符串,可以是任意类型,相比于Object类型的“键值对” map结构提供了一个“值值对”。Map类型类似对象类型,Map的值跟对象一样都是键值对(key:value)的形式存在,对象的键只能是字符串类型,而Map的键可以是任意类型,不仅限于字符串。类似数组类型,是值的集合,跟数组的区别是:Set类型中的数据没有重复,每一个值都是唯一的。

2023-07-11 21:34:25 47

原创 ES6新增的let和const与var的区别

let可以重复赋值,const定义后不能赋值,let声明的时候可以不赋值,const声明的时候必须赋值。相对于var存在预解析的行为,新出的let和const没有变量提升的操作,这使let和const存在临时性死区,流程在进入作用域创建变量,到变量开始可被访问访问之前的一段时间,称为临时性死区(TDZ)。var有全局作用域和局部作用域(在函数中声明一个函数,只能在函数内部使用),let和const有块级作用域的特性,就是在代码块中声明赋值后只能在代码块内部使用,代码块外部无法调用变量。

2023-07-10 19:43:46 41 1

原创 JavaScript的预解析

当使用 var fn = function(){}时,JavaScript只会将var变量提升到作用域顶部声明就结束了,不会识别到function,因此function不会被函数预解析。函数声明和变量声明的是同一个变量名称时,函数的优先级更高,先运行函数的代码然后再到变量的声明。JavaScript在预编译的时候会将var变量的声明提升到所在的作用域的顶部,赋值操作位置不变。4.函数声明和变量声明的是同一个变量名称时,函数的预编译优先级高于变量。函数预解析会将函数的声明和赋值都提升到作用域顶部。

2023-07-08 16:28:05 22

原创 javaScript事件传播机制

冒泡是指在触发一个事件后,JavaScript会向上寻找父元素是否存在与触发事件相同类型的事件,如果存在,JavaScript就会将该类事件触发,并且继续向上查找,直到body为止。捕获与冒泡相反,捕获是从上到下,从window到目标事件,存在同类型的事件就会自动触发,从window的事件处理函数函数开始,依次向下,直到事件目标的事件处理函数执行.语法: 元素.addEventListener('事件类型','事件处理函数',true) 默认false 冒泡 true为捕获。1)只会传播同类事件。

2023-07-06 20:15:18 175 1

原创 js的常见的事件

1.元素.on××××× = function(){} 对dom进行事件监听,虽然这个方法比较简单,但当同一个元素绑定相同类型的事件时,后一个绑定的事件会将前一个事件覆盖,并且无法选择是否冒泡还是捕获.解绑方式 : dom元素.on××××× = null,利用相同类型事件会被覆盖的原理将事件设置为null来将事件解绑.== keydown 按下键盘上任意一个按键的时候触发,如果按着不放,会重复触发。== keypress 按下键盘上的字符键触发,如果按着不放,会重复触发。

2023-07-05 19:31:09 156 1

原创 js常用的三个鼠标坐标获取方法

鼠标坐标的三个获取方法

2023-07-04 23:05:56 7638

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除