原生JS进阶
远方的原
这个作者很懒,什么都没留下…
展开
-
斐波拉契数列通过JavaScript实现,简单易懂
第一种 function fb1(n) { if (n <= 2) { return 1; } else { return fb1(n - 1) + fb1(n - 2); } } let str = ''; for (let i = 1; i < 11; i++) {原创 2022-01-10 15:35:18 · 459 阅读 · 0 评论 -
闭包的最简单的理解,三分钟学会闭包
1.其实闭包很简单的,看到网上有很多种说法,但是结果都是大同小异的。首先说一下我个人对闭包的理解,我认为闭包就是函数嵌套函数,其中被return到外面的内部函数就是闭包。 2.举个例子 function outFun() { let a = 10; return function inerFun() { console.log(a); } } let原创 2021-12-19 15:28:14 · 270 阅读 · 0 评论 -
自己实现一个new关键字,并运用起来
1.谈到new关键字,我一般会联想到它的作用,总体来说可以分为四步。 2.首先是创建一个空对象,然后改变this的指向,指向被创建的对象。然后给构造函数赋值,最后返回一个新的对象! 3.这里呢我就使用apply去改变this的指向,并让参数以数组的形式进行传递!砸门废话不多讲!直接上代码吧。 // 创建并实现属于自己的new关键字 function myNew(fn, ...args) { let obj = {} fn.ap原创 2021-11-11 19:40:55 · 848 阅读 · 0 评论 -
防抖和节流最简单的写法,简单易懂,注释清晰!
1.所谓节流就是事件在n秒内连续被触发多次,函数只执行一次。 2.所谓防抖就是事件被触发,n秒后执行一次函数,如果n秒内再次被触发,就重新计算时间。 3.废话不多说先上代码。 <div></div> <script> let num = 1; let div = document.getElementsByTagName("div")[0]; function numChange() {原创 2021-10-19 20:30:28 · 1572 阅读 · 0 评论 -
JS加载时间线,总结知识,简单易懂!
来看我写文章的同学,相信你们都知道当浏览器在打开一个页面,且当它运行时候。js脚本会初始化,然后实现功能。在这个过程中浏览器会做一系列的事情,并且是按照顺序一件一件的去做,而这个执行顺序,我们可以叫它js加载时间线。 现在我来梳理一下这个js加载时间线。 1.创建Document对象,web页面开始解析。元素对象和文本节点会被添加到文档中去, document.readyState = "loading"。 2.遇到link标签外部css,创建线程异步加载,然后继续解析文档。 3.遇到script原创 2021-10-05 21:47:55 · 732 阅读 · 0 评论 -
手写js源码,实现call方法!
1.首先 context 为可选参数,如果不传的话默认上下文为 window ; 2.接下来给 context 创建一个 fun 属性,并将值设置为需要调用的函数; 因为 call 可以传入多个参数作为调用函数的参数,所以需要将参数剥离出来; 然后调用函数并将对象上的函数删除。 3.下面就给大家展示call方法的实现过程,其实不难。 // this 为调用的函数 // context 是参数对象 // 在函数原型上定义自己的myCall方法 Function.prototype.myCall =原创 2021-10-07 15:22:42 · 363 阅读 · 0 评论 -
利用call或者apply实现bind方法,注释简单清晰!
1.众所周知,apply方法和call、bind方法的不同之处是它们的传参形式,前者是通过数组的方式去传参,而后者则是通过参数列表的方式传参。 2.那么bind方法和call、apply方法的不同之处是,bind 是创建一个新的函数,我们必须要手动去调用,而后者不会。 3.终止它们的共同特点就是改变this的指向,下面呢。就给大家看看我使用call以及apply方法去实现自己的bind方法。 <script> // 利用call或者apply实现bind方法原创 2021-10-11 19:07:19 · 384 阅读 · 0 评论