iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >需要掌握的JavaScript技巧有哪些
  • 343
分享到

需要掌握的JavaScript技巧有哪些

2024-04-02 19:04:59 343人浏览 薄情痞子
摘要

这篇文章主要讲解了“需要掌握的javascript技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“需要掌握的JavaScript技巧有哪些”吧!1.

这篇文章主要讲解了“需要掌握的javascript技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“需要掌握的JavaScript技巧有哪些”吧!

1.判断对象的数据类型

需要掌握的JavaScript技巧有哪些

使用 Object.prototype.toString 配合闭包,通过传入不同的判断类型来返回不同的判断函数,一行代码,简洁优雅灵活(注意传入 type 参数时首字母大写)

不推荐将这个函数用来检测可能会产生包装类型的基本数据类型上,因为 call 会将第一个参数进行装箱操作

2. ES5 实现数组 map 方法

需要掌握的JavaScript技巧有哪些

image

值得一提的是,map 的第二个参数为第一个参数回调中的 this 指向,如果第一个参数为箭头函数,那设置第二个 this 会因为箭头函数的词法绑定而失效

另外就是对稀疏数组的处理,通过 hasOwnProperty 来判断当前下标的元素是否存在与数组中(感谢评论区的朋友)

3. 使用 reduce 实现数组 map 方法

需要掌握的JavaScript技巧有哪些

image

4. ES5 实现数组 filter 方法

需要掌握的JavaScript技巧有哪些

image

5. 使用 reduce 实现数组 filter 方法

需要掌握的JavaScript技巧有哪些

image

6. ES5 实现数组的 some 方法

需要掌握的JavaScript技巧有哪些

image

执行 some 方法的数组如果是一个空数组,最终始终会返回 false,而另一个数组的 every 方法中的数组如果是一个空数组,会始终返回 true

如果你对前端开发这门技术感兴趣,这里推荐一下我的前端学习交流群:767273102,里面都是学习前端的从最基础的html+CSS+JavaScript。Jqueryajaxnodeangular等到移动端HTML5项目实战的资料都有整理,送给每一位前端小伙伴。最新技术,与企业需求同步。好友都在里面学习交流,每天都会有大牛定时讲解前端技术!

7. ES5 实现数组的 reduce 方法

需要掌握的JavaScript技巧有哪些

image

因为可能存在稀疏数组的关系,所以 reduce 实现略有点复杂,需要保证跳过稀疏元素,遍历正确的元素和下标,有更简洁的写法欢迎评论区留言

8. 使用 reduce 实现数组的 flat 方法

需要掌握的JavaScript技巧有哪些

image

因为 selfFlat 是依赖 this 指向的,所以在 reduce 遍历时需要指定 selfFlat 的 this 指向,否则会默认指向 window 从而发生错误

原理通过 reduce 遍历数组,遇到数组的某个元素仍是数组时,通过 es6 的扩展运算符对其进行降维(ES5 可以使用 concat 方法),而这个数组元素可能内部还嵌套数组,所以需要递归调用 selfFlat

同时原生的 flat 方法支持一个 depth 参数表示降维的深度,默认为 1 即给数组降一层维度

需要掌握的JavaScript技巧有哪些

image

传入 Inifity 会将传入的数组变成一个一维数组

需要掌握的JavaScript技巧有哪些

image

原理是每递归一次将 depth 参数减 1,如果 depth 参数为 0 时,直接返回原数组

9. 实现 ES6 的 class 语法

需要掌握的JavaScript技巧有哪些

image

ES6 的 class 内部是基于寄生组合式继承,它是目前最理想的继承方式,通过 Object.create 方法创造一个空对象,并将这个空对象继承 Object.create 方法的参数,再让子类(subType)的原型对象等于这个空对象,就可以实现子类实例的原型等于这个空对象,而这个空对象的原型又等于父类原型对象(superType.prototype)的继承关系

而 Object.create 支持第二个参数,即给生成的空对象定义属性和属性描述符/访问器描述符,我们可以给这个空对象定义一个 constructor 属性更加符合默认的继承行为,同时它是不可枚举的内部属性(enumerable:false)

而 ES6 的 class 允许子类继承父类的静态方法和静态属性,而普通的寄生组合式继承只能做到实例与实例之间的继承,对于类与类之间的继承需要额外定义方法,这里使用 Object.setPrototypeOf 将 superType 设置为 subType 的原型,从而能够从父类中继承静态方法和静态属性

10. 函数柯里化

需要掌握的JavaScript技巧有哪些

image

使用方法:

需要掌握的JavaScript技巧有哪些

image

柯里化是函数式编程的一个重要技巧,将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术

函数式编程另一个重要的函数 compose,能够将函数进行组合,而组合的函数只接受一个参数,所以如果有接受多个函数的需求并且需要用到 compose 进行函数组合,就需要使用柯里化对准备组合的函数进行部分求值,让它始终只接受一个参数

借用冴羽博客中的一个例子

需要掌握的JavaScript技巧有哪些

image

11. 函数柯里化(支持占位符)

需要掌握的JavaScript技巧有哪些

image

使用方法:

需要掌握的JavaScript技巧有哪些

image

通过占位符能让柯里化更加灵活,实现思路是,每一轮传入的参数先去填充上一轮的占位符,如果当前轮参数含有占位符,则放到内部保存的数组末尾,当前轮的元素不会去填充当前轮参数的占位符,只会填充之前传入的占位符

12. 偏函数

需要掌握的JavaScript技巧有哪些

image

使用方法:

需要掌握的JavaScript技巧有哪些

image

偏函数和柯里化概念类似,个人认为它们区别在于偏函数会固定你传入的几个参数,再一次性接受剩下的参数,而函数柯里化会根据你传入参数不停的返回函数,直到参数个数满足被柯里化前函数的参数个数

Function.prototype.bind 函数就是一个偏函数的典型代表,它接受的第二个参数开始,为预先添加到绑定函数的参数列表中的参数,与 bind 不同的是,上面的这个函数同样支持占位符

13. 斐波那契数列及其优化

需要掌握的JavaScript技巧有哪些

image

利用函数记忆,将之前运算过的结果保存下来,对于频繁依赖之前结果的计算能够节省大量的时间,例如斐波那契数列,缺点就是闭包中的 obj 对象会额外占用内存

14. 实现函数 bind 方法

需要掌握的JavaScript技巧有哪些

image

函数的 bind 方法核心是利用 call,同时考虑了一些其他情况,例如

  • bind 返回的函数被 new 调用作为构造函数时,绑定的值会失效并且改为 new 指定的对象

  • 定义了绑定后函数的 length 属性和 name 属性(不可枚举属性)

  • 绑定后函数的原型需指向原来的函数

15. 实现函数 call 方法

需要掌握的JavaScript技巧有哪些

image

原理就是将函数作为传入的上下文参数(context)的属性执行,这里为了防止属性冲突使用了 ES6 的 Symbol 类型

16. 简易的 CO 模块

需要掌握的JavaScript技巧有哪些

image

使用方法:

需要掌握的JavaScript技巧有哪些

image

run 函数接受一个生成器函数,每当 run 函数包裹的生成器函数遇到 yield 关键字就会停止,当 yield 后面的 promise 被解析成功后会自动调用 next 方法执行到下个 yield 关键字处,最终就会形成每当一个 promise 被解析成功就会解析下个 promise,当全部解析成功后打印所有解析的结果,衍变为现在用的最多的 async/await 语法

17. 函数防抖

需要掌握的JavaScript技巧有哪些

image

leading 为是否在进入时立即执行一次, trailing 为是否在事件触发结束后额外再触发一次,原理是利用定时器,如果在规定时间内再次触发事件会将上次的定时器清除,即不会执行函数并重新设置一个新的定时器,直到超过规定时间自动触发定时器中的函数

同时通过闭包向外暴露了一个 cancel 函数,使得外部能直接清除内部的计数器

18. 函数节流

需要掌握的JavaScript技巧有哪些

image

和函数防抖类似,区别在于内部额外使用了时间戳作为判断,在一段时间内没有触发事件才允许下次事件触发

19. 图片懒加载

需要掌握的JavaScript技巧有哪些

image

getBoundClientRect 的实现方式,监听 scroll 事件(建议给监听事件添加节流),图片加载完会从 img 标签组成的 DOM 列表中删除,最后所有的图片加载完毕后需要解绑监听事件

需要掌握的JavaScript技巧有哪些

image

intersectionObserver 的实现方式,实例化一个 IntersectionObserver ,并使其观察所有 img 标签

当 img 标签进入可视区域时会执行实例化时的回调,同时给回调传入一个 entries 参数,保存着实例观察的所有元素的一些状态,比如每个元素的边界信息,当前元素对应的 DOM 节点,当前元素进入可视区域的比率,每当一个元素进入可视区域,将真正的图片赋值给当前 img 标签,同时解除对其的观察

20. new 关键字

需要掌握的JavaScript技巧有哪些

image

21. 实现 Object.assign

需要掌握的JavaScript技巧有哪些

image

Object.assign 的原理可以参考我另外一篇博客

22. instanceof

需要掌握的JavaScript技巧有哪些

image

原理是递归遍历 right 参数的原型链,每次和 left 参数作比较,遍历到原型链终点时则返回 false,找到则返回 true

23. 私有变量的实现

需要掌握的JavaScript技巧有哪些

image

使用 Proxy 代理所有含有 _ 开头的变量,使其不可被外部访问

需要掌握的JavaScript技巧有哪些

image

通过闭包的形式保存私有变量,缺点在于类的所有实例访问的都是同一个私有变量

需要掌握的JavaScript技巧有哪些

image

另一种闭包的实现,解决了上面那种闭包的缺点,每个实例都有各自的私有变量,缺点是舍弃了 class 语法的简洁性,将所有的特权方法(访问私有变量的方法)都保存在构造函数中

需要掌握的JavaScript技巧有哪些

image

通过 WeakMap 和闭包,在每次实例化时保存当前实例和所有私有变量组成的对象,外部无法访问闭包中的 WeakMap,使用 WeakMap 好处在于不需要担心内存溢出的问题

24. 洗牌算法

早前的 chrome 对于元素小于 10 的数组会采用插入排序,这会导致对数组进行的乱序并不是真正的乱序,即使最新的版本 chrome 采用了原地算法使得排序变成了一个稳定的算法,对于乱序的问题仍没有解决

需要掌握的JavaScript技巧有哪些

image

需要掌握的JavaScript技巧有哪些

image

通过洗牌算法可以达到真正的乱序,洗牌算法分为原地和非原地,图一是原地的洗牌算法,不需要声明额外的数组从而更加节约内存占用率,原理是依次遍历数组的元素,将当前元素和之后的所有元素中随机选取一个,进行交换

25. 单例模式

需要掌握的JavaScript技巧有哪些

image

通过 ES6 的 Proxy 拦截构造函数的执行方法来实现的单例模式

26. promisify

需要掌握的JavaScript技巧有哪些

image

使用方法:

需要掌握的JavaScript技巧有哪些

image

promisify 函数是将回调函数变为 promise 的辅助函数,适合 error-first 风格(nodejs)的回调函数,原理是给 error-first 风格的回调无论成功或者失败,在执行完毕后都会执行最后一个回调函数,我们需要做的就是让这个回调函数控制 promise 的状态即可

这里还用了 Proxy 代理了整个 fs 模块,拦截 get 方法,使得不需要手动给 fs 模块所有的方法都包裹一层 promisify 函数,更加的灵活

27. 优雅的处理 async/await

需要掌握的JavaScript技巧有哪些

image

使用方法:

需要掌握的JavaScript技巧有哪些

image

无需每次使用 async/await 都包裹一层 try/catch ,更加的优雅,这里提供另外一个思路,如果使用了 webpack 可以编写一个 loader,分析 AST 语法树,遇到 await 语法,自动注入 try/catch,这样连辅助函数都不需要使用

28. 发布订阅 EventEmitter

需要掌握的JavaScript技巧有哪些

image

通过 on 方法注册事件,trigger 方法触发事件,来达到事件之间的松散解耦,并且额外添加了 once 和 off 辅助函数用于注册只触发一次的事件以及注销事件

感谢各位的阅读,以上就是“需要掌握的JavaScript技巧有哪些”的内容了,经过本文的学习后,相信大家对需要掌握的JavaScript技巧有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 需要掌握的JavaScript技巧有哪些

本文链接: https://www.lsjlt.com/news/85477.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 需要掌握的JavaScript技巧有哪些
    这篇文章主要讲解了“需要掌握的JavaScript技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“需要掌握的JavaScript技巧有哪些”吧!1....
    99+
    2024-04-02
  • Linux运维需要掌握的实用技巧有哪些
    这篇文章主要介绍“Linux运维需要掌握的实用技巧有哪些”,在日常操作中,相信很多人在Linux运维需要掌握的实用技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux运维需要掌握的实用技巧有哪些...
    99+
    2023-06-15
  • 深入 JavaScript需要掌握的概念有哪些
    本篇文章为大家展示了深入 JavaScript需要掌握的概念有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。你可能会经常听到一些人在抱怨 JS 很奇怪,有时甚至...
    99+
    2024-04-02
  • Dreamweaver编写CSS必需掌握的技巧有哪些
    小编给大家分享一下Dreamweaver编写CSS必需掌握的技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  一般地讲,样式表(style sheet)...
    99+
    2023-06-08
  • Linux 下打包 PHP 索引,你需要掌握的技巧有哪些?
    在开发 PHP 程序时,打包 PHP 索引是必不可少的一步。通过打包,可以将 PHP 程序的所有文件打包成一个文件,方便程序的部署和维护。本文将介绍在 Linux 下打包 PHP 索引的相关技巧和注意事项,帮助 PHP 开发人员更加高效地...
    99+
    2023-08-18
    索引 打包 linux
  • 学K8S需要掌握哪些技能
    本篇内容介绍了“学K8S需要掌握哪些技能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  学K8S需要掌握哪些技能  熟悉容器化技术概念和原...
    99+
    2023-06-04
  • Linux运维需要掌握的技巧有什么
    这篇文章跟大家分析一下“Linux运维需要掌握的技巧有什么”。内容详细易懂,对“Linux运维需要掌握的技巧有什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux运维需要...
    99+
    2023-06-28
  • 前端开发需要掌握的技术有哪些
    这篇文章主要介绍了前端开发需要掌握的技术有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前端开发需要掌握的技术:1、绘制原型图,实现效果图;2、与设计师的沟通和项目的参与...
    99+
    2023-06-06
  • JavaScript需要知道的小技巧有哪些
    这篇文章主要介绍JavaScript需要知道的小技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、神奇的扩展运算符扩展运算符(spread)是三个点( ... ), 可以说我在 JavaScript 中最喜...
    99+
    2023-06-22
  • 中级前端工程师必须要掌握的JavaScript技巧有哪些
    这篇文章主要介绍“中级前端工程师必须要掌握的JavaScript技巧有哪些”,在日常操作中,相信很多人在中级前端工程师必须要掌握的JavaScript技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • 网页设计师有哪些需要掌握的技能
    本篇内容介绍了“网页设计师有哪些需要掌握的技能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!网页设计既是一门科学也是一门艺术。网页设计工作一...
    99+
    2023-06-08
  • Java程序员所需要掌握的技能有哪些
    这篇文章跟大家分析一下“Java程序员所需要掌握的技能有哪些”。内容详细易懂,对“Java程序员所需要掌握的技能有哪些”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Java程序员...
    99+
    2023-06-02
  • Unix 环境下 Java 打包同步:哪些技巧需要掌握?
    在 Unix 环境下,Java 打包同步是非常常见的任务。这是因为 Java 应用程序的运行需要依赖于一些外部库,而这些库又需要在打包时被打包进去。因此,掌握 Java 打包同步的技巧是非常必要的。 在本文中,我们将介绍一些 Unix 环...
    99+
    2023-06-20
    打包 同步 unix
  • PHP、Linux和Unix的开发者需要掌握哪些JavaScript技能?
    随着互联网技术的不断发展,前端开发技术也日新月异。作为PHP、Linux和Unix的开发者,除了熟悉后端开发技术,还需要掌握一定的前端开发技能。JavaScript作为前端开发的核心技术之一,对于PHP、Linux和Unix的开发者来说,...
    99+
    2023-07-04
    linux unix javascript
  • Java中的文件处理技巧:你需要掌握哪些知识?
    Java是一种非常流行的编程语言,被广泛应用于各种领域。在Java中,文件处理是一个非常重要的方面。无论是读取文件、写入文件、复制文件还是删除文件,Java都提供了非常方便的方法。在本篇文章中,我们将深入探讨Java中的文件处理技巧,帮助...
    99+
    2023-06-24
    文件 二维码 shell
  • 做Java开发需要掌握哪些技术
    本篇内容主要讲解“做Java开发需要掌握哪些技术”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“做Java开发需要掌握哪些技术”吧!首先基础部分,需要熟练掌握基础...
    99+
    2024-04-02
  • 开发Java程序时,有哪些需要掌握的技术?
    开发Java程序时,需要掌握的技术非常多,从基础的Java语法到高级的框架和工具,都需要掌握才能写出高质量的Java程序。本文将介绍一些开发Java程序时需要掌握的技术,希望能够对正在学习Java的读者有所帮助。 一、Java基础语法 Ja...
    99+
    2023-09-12
    关键字 开发技术 文件
  • 你需要掌握的20个Python常用技巧
    目录1.字符串反转2.每个单词的第一个字母大写3.字符串查找唯一元素4.重复打印字符串和列表n次5.列表生成6.变量交换7.字符串拆分为子字符串列表8.多个字符串组合为一个字符串9....
    99+
    2024-04-02
  • 大数据对象开发技术需要掌握哪些PHP编程技巧?
    随着大数据技术的普及和应用,越来越多的企业开始将大数据技术应用到自己的业务中。而PHP作为一种流行的编程语言,在大数据对象开发方面也有着广泛的应用。本文将介绍一些PHP编程技巧,帮助开发者在大数据对象开发中更加得心应手。 一、掌握面向对象编...
    99+
    2023-10-21
    大数据 对象 开发技术
  • 想要成为ASP关键字shell开发技术的高手,需要掌握哪些技巧?
    ASP是一种非常流行的Web开发技术,其主要特点是易于学习和使用。在ASP中,关键字shell是一个非常重要的组件,它可以让我们在ASP应用程序中执行一些系统级别的操作,比如创建和删除文件夹,执行命令行等。如果你想成为ASP关键字shel...
    99+
    2023-07-10
    关键字 shell 开发技术
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作