![](https://img-blog.csdnimg.cn/20200105000245361.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaScript高级进阶
该栏目对js高级知识的总结
guocongcong-cc
归纳总结,记录职业生涯
展开
-
前端进阶所必须具备的知识主干
当你开始跻身架构师工作岗位时,你就深切的体会到程序员进阶的心酸,你要掌握的东西绝非摸一个项目领域知识点的综合掌握程度,虽然原则上来讲没有人能够独自解决所有问题,但是我们更希望找到一个人能够解决更多的问题,即使不能立即解决,凭借自己已有的知识水平判断出可能的问题所在,继而制定调查计划,主导调查方向,得出科学结论;与此同时你要明白,但凡你不是在做全世界顶尖的科研攻关,那么你所遇到的问题90%以上是别人...原创 2020-03-18 11:40:44 · 169 阅读 · 0 评论 -
js Object 所有知识点汇总
在js中所有对象都是Object,可以说他是js的灵魂+核心,几乎所有js数据类型的问题往上倒三代必然就会面对它,es6新语法也是着重在object上进行了扩展,另外目前流行的vue,react,angular框架基本上都引用到object的新方法,本文就Object灵魂三问:Object是什么?Object有哪些属性方法?Object这些属性方法怎么用?做一个全面的整理总结:文章目录js中Ob...原创 2020-01-21 16:40:58 · 1320 阅读 · 1 评论 -
js高级进阶之函数防抖、截流
在前端开发实现相关功能时,由于js中部分事件的设计存在一定的问题,对完成业务带来很大的困难,比如js的scrooll ,mouseover ,resize等事件浏览器是实时触发实时相应的,那么如果我们要对其进行监听实现相关业务,那么就会导致业务也被连续多次执行看个例子:<!DOCTYPE html><html lang="en"><head> &...原创 2020-01-11 23:36:35 · 899 阅读 · 0 评论 -
js高级进阶之函数柯里化
函数柯里化是所有编程语言推崇的函数优化方式,js的函数柯里化是你写出优雅函数的基础。概念在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。例如:我们求(a+b)*c 如果普通方法实现 f(a,b,c),用柯里化方法:f(a)(b)©这种调用格式获取。实现原理闭包来保存参数...原创 2020-01-11 22:04:17 · 668 阅读 · 0 评论 -
js高级进阶之缓存函数memozition
如果你阅读过一些常用的js库源码,可能对很多高级的写法就有所了解,本篇博文笔者将之前阅读源码中遇到的相关关于函数的牛逼写法做一总结,最主要是对缓存函数 memozition、函数柯里化Currying、偏函数partial application的详解。缓存函数 memozition1.1概念缓存函数指,函数将上次计算结果缓存起来,当下次调用函数时如果遇到相同的参数则直接将缓存结果返回,节省...原创 2020-01-11 21:06:33 · 791 阅读 · 1 评论 -
js高级进阶之数据结构“队列”的实现
像栈一样,队列也是一种线性表。它允许在表的一端插入数据,在另一端删除元素。插入元素的这一端称之为队尾。删除元素的这一端我们称之为队首。队列的结构如下图所示。队列的特性:在队尾插入元素,在队首删除元素。FIFO(先进先出),和食堂排队打饭一样。es5 实现function Queue(){ var temps = []; //队列的插入 ...原创 2020-01-10 18:05:13 · 165 阅读 · 0 评论 -
js高级进阶之数据结构“链表”的实现
我们知道计算机内存管理在处理数组是时需要分配连续的内存空间的,如果一个数组长度很大则在维护数组时就会性能很低,根据牺牲空间换时间的原理,链表这种数据结构就比较合适用来处理数据量表较大的线性结构数据。vue3框架中就有大量的链表数据结构应用,学习链表对阅读源码有很大帮助。数组应用场景:数据比较少;经常做的运算是按序号访问数据元素;数组更容易实现,任何高级语言都支持;构建的线性表较稳定。链表应用场...原创 2020-01-10 16:21:50 · 234 阅读 · 0 评论 -
js高级进阶之数据结构“栈”es5和es6的实现及应用
对程序员来说栈结构最为熟悉的一种数据结构,其特点是遵从后进先出(LIFO——Last In First Out)原则,新添加或待删除的元素保存在栈的同一端,称作栈顶,另一端称作栈底。在栈中,新元素总是靠近栈顶,而旧元素总是接近栈底。js实现栈数据结构也相对简单es5实现栈结构 /** * stack类 * */ functio...原创 2020-01-09 17:04:52 · 219 阅读 · 0 评论 -
js高级进阶之数据结构“二叉排序树”的es5和es6实现与应用
“树”是一种较为复杂也非常重要的数据结构,特别是目前流行的vue react框架虚拟dom操作时都是以“树”为数据结构模型进行一系列的操作的,弄清楚树数据结构算法对阅读源码有很大的帮助。认识树形结构1.1树结构一个树结构包含一系列存在父子关系的节点。每个节点都有一个父节点(除了顶部的第一个节点)以及零个或多个子节点:1.2 树的定义节点:树中的每个元素都叫作节点;根节点:位于树顶部...原创 2020-01-09 13:52:02 · 351 阅读 · 0 评论 -
js高级进阶之高阶函数篇
学会高阶函数是每一个前端开发者走向高级阶段的必经之路,虽然你可以在业务代码中不去使用,但你总需要去读懂别人的代码吧,如果你不熟悉这些高阶使用方法,必然会遭到鄙视嘲笑,甚至强行复制粘切不明大意的胡乱修改会带来灾难性的后果,当然学习高阶函数也不仅仅是要去使用几个高阶函数方法,最主要的是领略其设计思想,为自己之后写出牛逼点的代码做基础。高阶函数概念一等函数您可能听说过JavaScript将函数视为...原创 2020-01-05 19:41:45 · 1579 阅读 · 0 评论 -
js高级进阶之compose函数和pipe函数
本节内容实际是函数式编程的进一步详细讲解,我们要对函数进行拆分潜逃调用离不开compose和pipe思想方法compose函数指的是对要嵌套执行的函数进行平铺,嵌套执行指的是一个函数的返回结果作为另一个函数的执行参数。核心思想是专注于函数执行过程,隔离数据的影响。概念看起来太难懂,我们直接上例子:有这样一个需求 求一个数的10倍再加1的值完全命令式编程实现:let calculate =...原创 2020-01-05 15:28:40 · 2935 阅读 · 0 评论 -
js高级进阶之函数式编程
如何能通过增加代码的健壮来提高程序的可靠性是每一个高级前端要面对的问题,函数式编程就是一个必备的利器。函数式编程的概念函数式编程是一种编程范式,是一种构建计算机程序结构和元素的风格,它把计算看作是对数学函数的评估,避免了状态的变化和数据的可变。与之相对应的就是“命令是编程”例如:给数组每项取平方操作,命令式编程:详细的命令机器去完成我们想要的结果;看例子:let a = [1,2,3,4...原创 2020-01-05 14:11:36 · 246 阅读 · 0 评论 -
js高级进阶之单元测试jest使用
如何写出可靠的js代码,当然是需要单元测试的,单元测试对js代码的意义:检测出潜在的bug快速反馈功能输出,验证代码是否达到预期保证代码的重构安全方便协作开发被测试对象:程序中的最小测试单元函数或模块测试代码:用来测试最小单元的代码首先学习下不使用框架如何测试代码测试对象// 被测试对象let add = (a,b)=>a+b 测试代码// 测试代码let ...原创 2020-01-05 02:59:33 · 578 阅读 · 0 评论 -
js高级进阶之内存管理
js是动态语言,并没有提供内存管理相关的的api操作,需要开发人员在写代码中规避或者预判处理相关内存问题,随着前端复杂度逐渐增高,前端开发者对于js内存管理要求逐渐加强,如果你想进阶高级那么必须对内存管理有所较深理解,本篇博文详细介绍js内存相关知识。首先从js数据类型着手js实际上有两种数据类型:原始数据类型字符串String、数字Number、布尔Boolean、数组Array、空对象...原创 2020-01-05 01:53:23 · 239 阅读 · 0 评论