
js相关
文章平均质量分 92
javascrpit
haihanShang
这个作者很懒,什么都没留下…
展开
-
typeof与instanceof的区别
typeof typeof 是判断参数是什么类型的实例,返回值为说明运算数类型的字符串。 返回值结果:“number”、“string”、“boolean”、“object”、“function”、“undefined” 若参数为引用类型,始终返回“object”,对于Array、null始终返回“object”,所以用typeof来判断参数类型有很大的局限性。 instanceof instanceof是用来判断一个对象在其原型链中是否存在一个构造函数的prototype属性 a instanceof b原创 2020-12-17 08:52:24 · 151 阅读 · 0 评论 -
深拷贝与浅拷贝的原理和区别
我特别想写这篇,因为我看到了一篇非常非常优秀的博客,讲的巨好!直接贴上链接,强烈建议大家去阅读原博主的 https://www.cnblogs.com/echolun/p/7889848.html 1.深拷贝和浅拷贝的区别 B复制A,A变,B变,浅拷贝。 B复制A,A变,B不变,深拷贝。 举个简单example 平常的a赋值给b,a变,b并不会变。而对于对象obj2,这种简单的赋值,obj变,obj2变,就是浅拷贝了。 这是为啥呢?这就要我们从数据类型说起了。。。。 2.基本数据类型和引用数据类型 基原创 2020-12-03 15:59:20 · 18401 阅读 · 1 评论 -
js的继承和原型链(更新中)
话不多说,直接上MDN链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain 说实话啦,上面讲的非常非常详细,大家可以移步去看原文哦,我这里分享一下自己的理解 。 啥是继承 我们知道在js中,万物皆对象,而每一个实例对象(object)都有自己的私有属性(proto)指向它的构造函数的原型对象(prototype),而这个原型对象也有自己的自己的原型对象(proto),层层向原创 2020-11-29 13:17:17 · 135 阅读 · 0 评论 -
弄懂bind,apply和call的区别
直接上区别: 最大共同点:bind,apply,call都能改变this的指向(这也是他们的最大用处)。 不同点: bind(this,数组,类数组或对象) apply(this, 数组,类数组或对象) call(this,arg1,arg2,arg3…) 还有,只有bind是创造一个新的函数并返回,而其他两个都是直接用。 第一个参数的传递 1、thisObj不传或者为null、undefined时,函数中的this会指向window对象(非严格模式)。 2、传递一个别的函数名时,函数中的this将指向原创 2020-11-28 19:25:16 · 196 阅读 · 0 评论 -
自写函数的防抖和节流
函数的防抖和节流是个啥,在知乎上看到一篇非常形象的文章,这里挂上链接 https://zhuanlan.zhihu.com/p/72923073(好!!!) 防抖: 为了说明问题,假设一个场景:鼠标滑过一个div,触发onmousemove事件,它内部的文字会显示当前鼠标的坐标。每当我们的鼠标移动,都会触发事件,展示新的坐标。抖的意思其实就是‘执行’,而我们为了防止函数过于频繁的执行,使其只在我们停止移动的时候执行一次,这个时候我们就需要用到函数的防抖了。 ...原创 2020-11-28 18:51:56 · 244 阅读 · 0 评论 -
bind()的实现(持续更新中)
啥是bind(),bind的官方定义是:bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用。 看起来感觉是不是特别滴简单,但是如果让你实现一下bind,我们该如何做?我们先来看一下bind的用法 ex1 1.我们直接看到主角bind的这行,由fun这个函数调用了bind,紧接着,我们将对象a作为第一个参数,所以此时this指针将指向这个对象,而‘3333’将自然而然成为新函数的参数也就是str, 2.紧接着我们原创 2020-11-27 17:08:42 · 743 阅读 · 1 评论 -
浅谈js中的this
明确一点,this永远指向一个对象,而指向的谁,完全取决于谁是他的直接调用者 1.话不多说,我们直接上example ex1: 这里将函数aaa赋值给了ob对象内的fun,我们直接看ob.fun()这行,这里是由ob这个对象调用了aaa函数,因此this指向的就是ob,输出的就是1111而下一行我们直接执行aaa(),而调用aaa()的就是window,所以this指向window,输出的就是2222。 看到这里是不是觉得很easy,我们再来看一个example ex2: 异曲同工,这把ob的fun的函原创 2020-11-26 14:51:08 · 116 阅读 · 0 评论 -
谈谈var变量提升以及var,let,const的区别
1.首先我们理解一个‘’提升‘’这个概念,意思就是无论var aaa =“我是var"这行代码在哪个位置,变量的声明都会被提升到所在作用域最前端执行,而变量的赋值则是在当前行执行,我们来个简单的例子 2.ex1 1.第一行输出aaa,而此时在同一作用域中,下一行的var aaa=“我是var”,声明并赋值了,所以按照提升机制,var aaa 将提升到第一行,但是 aaa=“我是var"仍在console.log(aaa)之下,所以第一个输出undefined。 2.接下来执行hhh()函数,依葫芦画瓢,同原创 2020-11-26 14:03:19 · 524 阅读 · 1 评论 -
宏任务与微任务
其实关于宏任务与微任务网上的博客讲的都非常好。我这里记录一下自己的理解,以便日后方便复习整理。 1.那么首先我们要理解js运行的机制,这里引入一个Event Loop的图 图片摘自https://www.jianshu.com/p/bfc3e319a96b 图片摘自https://www.cnblogs.com/fangdongdemao/p/10262209.html 其实上述两个图已经可以很清晰的看清楚机制了,我们可以宏观的认为整个js运行任务就是宏任务,在宏任务内部,优先运行微任务,再运行宏任务,.原创 2020-11-26 12:37:32 · 784 阅读 · 0 评论 -
Promise机制(持续更新中)
promise这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学原创 2020-11-26 09:03:34 · 126 阅读 · 0 评论