摘要:
数据类型 数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。 基本数据类型的特点:直接存储在栈(stack)中的数据 引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里 引用数据类型在栈中存储了指 阅读全文
摘要:
函数编程的函数组合:两个纯函数组合之后返回了一个新函数 var compose = function(f,g) { return function(x) { return f(g(x)); }; }; 效果: var toUpperCase = function(x) { return x.toUp 阅读全文
摘要:
Currying 为实现多参函数提供了一个递归降解的实现思路——把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数,在某些编程语言中(如 Haskell),是通过 Currying 技术支持多参函数这一语言特性的。 所以 Curryi 阅读全文
摘要:
想学习可视化,做一个可编辑的可视化工具已经很久了,一个可拖动和缩放的画布是很有必要,在参考了gridstackjs 后作出一个简单的可拖拽和缩放的画布。 画布初始化 首先完成画布的大致功能结构,主要是利用mousedown,mousemove,mouseup来记录鼠标的位置信息,并触发初始化传入的钩 阅读全文
摘要:
截流防抖函数经常用在频繁按钮操作,页面滚动触发,鼠标拖拽,输入查询等功能中。是为了在频繁操作中为了减少性能损耗的小技巧,这两个概念常用但是又容易混淆,下面简单的分析下防抖与截流的异同之处 防抖:意味着防止抖动出现的误操作,也就是防止像抖动一样的频繁操作。所以在防抖函数里会有个时间限制,当函数在一次执 阅读全文
摘要:
观察者模式在前端开发中非常常用,我们经常用的事件就是观察者模式的一种体现。它对我们解耦模块、开发基于消息的业务起着非常重要的作用。Node.js 原生自带 EventEmitter 模块,可见它的重要性。 作为在工作中经常遇到和面试的经典题目当然要琢磨透彻,下面一步步手动写一个eventEmitte 阅读全文
摘要:
canvas 作图经常会遇到canvas绘制的图片模糊不清问题,这种问题实际上是画布尺寸与画布范围内实际像素不一致造成的。了解 dpr 原因分析 假设dpr = 2;图片大小为60x60px; 1.DOM呈现图片过程 图片——》浏览器css像素(显示尺寸)——》屏幕实际像素 60x60 30x30 阅读全文
摘要:
最近在写一个可拖拽的画布功能,所以用到获取位置信息较多,由于基础不扎实忘了一些,容易混淆的API,在这里记下pageX,clientX,screenX,offsetX区别 pageX/pageY: 鼠标相对于整个页面的X/Y坐标。注意,整个页面的意思就是你整个网页的全部,比如说网页很宽很长,宽200 阅读全文
摘要:
js 是一种"单线程”(single thread)执行环境的语言,所以在任务执行的过程中是按照队列的形式,当一个任务执行完再执行下一个任务,这样的模式会因为一个任务执行时间较长的时候出现性能问题,例如页面假死状态。 为了解决这个问题,js将执行模式分为两种:同步(synchronous)和异步(a 阅读全文
摘要:
在 React 底层,主要对合成事件做了两件事:事件委派和自动绑定。 1. 事件委派 在使用 React 事件前,一定要熟悉它的事件代理机制。它并不会把事件处理函数直接绑定到 真实的节点上,而是把所有事件绑定到结构的最外层,使用一个统一的事件监听器,这个事件监 听器上维持了一个映射来保存所有组件内部 阅读全文