![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Javascript
小王程序猿
一位爱折腾,热爱生活的程序猿
展开
-
javascript-手写实现instanceOf
instanceof判断右边元素的prototype是否在左边元素的原型链上,左边元素沿着原型链不断往上查找,直到结束,如果查找期间找到原型链中存在左边元素的prototype,返回true,查找完都没有找到,返回false.原创 2024-06-25 09:43:19 · 170 阅读 · 0 评论 -
javascript-手写实现reduce
简单实现reduce方法。原创 2024-06-23 14:50:42 · 101 阅读 · 0 评论 -
javascript-实现深拷贝deepClone
深拷贝,解决嵌套循环问题。原创 2024-06-23 14:27:55 · 142 阅读 · 0 评论 -
javascript-实现new运算符
【代码】javascript-实现new运算符。原创 2024-06-22 22:10:32 · 85 阅读 · 1 评论 -
Javascript解析URL参数
Javascript实现获取URL地址上携带的参数值。原创 2023-09-27 15:54:46 · 139 阅读 · 1 评论 -
Javascript计算字符串长度
HTML页面中的字符,中文/英文和字符,所占的宽度不同,一个中文字符的间距 约等同于 两个英文或字符 的宽度,所以在计算字符串展示在页面中的真实宽度时候,需要区分中文/英文和字符。在开发中,可能会遇到动态计算字符串的长度的需求,根据容器宽度和字符串的长度,判断是否需要在字符串后拼接省略号展示。原创 2023-09-20 18:22:00 · 521 阅读 · 1 评论 -
Javascript实现数组行列反转
【代码】Javascript数组行列反转。原创 2023-06-28 15:21:12 · 397 阅读 · 1 评论 -
Javascript中Map使用
map类似于object,也是通过key->value的方式保存数据,不同的是,map的key可以是任意值。map可以通过set()添加一个值,通过get()获取对应key的值。1、通过forEach遍历。原创 2023-06-28 12:30:08 · 1126 阅读 · 1 评论 -
Javascript手写实现call
基于以上的理解,我们可以有一个call实现的基本思路,在Cat中动态添加一个key,key指向Dog中的eat方法,之后再把这个唯一key删除,那就可以实现call的效果。Dog.eat.call(Cat, ‘鱼肉’, ‘牛肉’);调用了Dog的eat方法,并把eat方法中的this,指向了Cat,执行了方法eat(),输出Cat的内容;在原生的基础上,我们知道call改变了Dog中eat的指向,但是它的效果,是不是和在Cat中添加eat的方法是一样的?call可以执行该方法,并改变this的指向。原创 2023-06-25 18:58:22 · 68 阅读 · 0 评论 -
Javascript中call apply bind的区别
Cat中没有eat方法,如果想要实现eat动作,可以在Cat中写自己的eat方法,但是既然Dog中已经有,能不能直接调用呢,答案是可以的,通过call改变Dog中的this指向为Cat即可;执行Dog的eat方法,但是绑定的this指向Cat,并传递参数’鱼肉‘和‘牛肉’,输出为‘喵喵吃鱼肉和牛肉’。执行Dog的eat方法,this.name为向Dog的‘旺财’,输出为‘旺财吃骨头和鸡肉。bind函数会改变this的指向,但并不执行当前函数,而是返回函数,需要手动执行返回的函数,如例的。原创 2023-06-25 17:55:53 · 65 阅读 · 0 评论 -
javascript手写高并发控制
【代码】javascript手写高并发控制。原创 2023-06-21 10:49:56 · 716 阅读 · 0 评论 -
Javascript手写防抖和节流
举个通俗易懂的例子,电梯1秒内没有检测到有人经过门口,即开始关闭,如果在一秒内有新的人进入电梯,则电梯重新开始计时,时间间隔仍为1秒,1秒后,无人进入电梯,则电梯门开始关闭。防抖,以最新的事件触发为时间起点,在固定时间后执行方法。节流,指固定时间内,只执行一次。且执行第一次触发的函数。如1秒内有3次执行,但是最终只能执行一次。原创 2023-06-15 18:47:49 · 156 阅读 · 0 评论 -
原型和原型链
原型又可以看做是另一个构造函数的实例,那原型也会有__proto__,指向构造函数的原型Prototype,如图中的Person.Prototype,这种层层递进的关系,就称为原型链。一个实例属性或方法的调用,如果在当前实例对象没有找到,会顺着原型链一层层查找,直到抵达null,才会终止。每个实例都有一个__proto__属性,指向构造函数的原型Prototype。同一个构造函数new出来的所有实例,都可以访问,原型里的属性和方法。每个构造函数,都会有一个Prototype属性,指向原型。原创 2023-06-15 16:17:39 · 78 阅读 · 1 评论 -
Javascript几种判断 数据类型 的方法
2、instanceof,简单来说就是判断instance 左侧实例的__proto__原型链上是否存在 右侧构造函数的prototype,常用于判断引用数据类型。缺陷:null、date、object、array几种数据类型都会判断为object。3、Object.prototype.toString.call(),比较通用。通过简单的例子对比JavaScript各种数据类型判断的差异。1、typeof,常用于判断基本数据类型。官方解释: instanceof。简单实现instanceof功能。原创 2023-06-10 10:28:19 · 91 阅读 · 1 评论 -
javascript实现json数据转文件,并下载
将获取到的json数据,使用JSON.stringify转化为字符串,并以data:的形式传给a标签,通过触发a标签的点击事件,最终实现文件下载。简单实现前端json数据,以文件的形式,下载到本地。原创 2023-06-09 16:53:33 · 3017 阅读 · 0 评论 -
谈谈requestAnimationFrame
在做动画的时候,很多程序员会选择使用requestAnimationFrame,和setTimeout、setInterval不同,它不需要设置执行的时间频率,因为它是根据浏览器的渲染频率执行的。一般浏览器的渲染频率为60HZ,即每秒重绘60次,执行时间间隔为1000ms/60,约等于16.66667ms。requestAnimationFrame接受的参数是一个callback函数。原创 2023-06-09 16:17:10 · 962 阅读 · 0 评论