从下到上的字符编码总结
最近碰到一些数据传输问题,什么unicode,UTF-8,base64等等一堆数据转换相关的概念分不清楚,索性做一个从下到上的总结,以后自己查起来也方便。
最近碰到一些数据传输问题,什么unicode,UTF-8,base64等等一堆数据转换相关的概念分不清楚,索性做一个从下到上的总结,以后自己查起来也方便。
有些时候我们需要像某些对象发送请求,但还没有确定的接受者和响应操作。就像导演拍戏一样,只要一声action的请求,不同的工作人员就会根据初始的职责来进行各自的响应操作。将请求者和接收者完全解耦,将响应方法封装在接收者内通过命令激活,这就是命令模式。
前端性能优化中,缓存是非常重要的一部分。一个优秀的缓存策略可以很好的降低带宽,节省成本,并且提升用户体验。下面就分别来分析总结在web中常用的缓存类型。
代理模式是业务场景中很常用的模式。关键在于当不方便直接访问一个对象时,提供一个替身对象来接受访问,然后通过替身对象的内部处理将请求转交给本体对象。
块级格式化上下文是在CSS定位中非常有用的一个概念,它决定了部分元素的定位方式以及和其他元素的相互作用。下面从CSS布局开始来一步一步分析BFC的用法。
俗话说条条大路通罗马,在程序设计中不少问题也存在着多种解决方案。不同的解决方案虽然都是用来解决同一个问题,但由于场景不同最适合的方案也不一样,于是很自然的想到将解决方案分别封装起来在合适的场景替换使用。这就是策略模式。
弹出层是一个很常见的需求。在一个登录功能的设计中,我们都希望无论单击多少次登录按钮,这个弹窗都只会被创建一次。这里就适合用单例模式来创建。在JS中单例模式的应用也非常广泛,比如全局缓存,window对象等等。下面我就来谈谈在JS中单例模式的具体应用。
在JS中实现遍历的方法多种多样,比较常用的有标准的for循环,for in,数组的各种遍历方法等等。不同的方法有不同的优缺点,导致我们经常混合使用不同的遍历方法,不仅增加了自身出错的可能性,也使代码增加了额外的复杂度,于是ES6中新增了迭代器设计来专用于迭代对象。
在JS中只存在一种集合类型,就是数组类型。数组只可以使用数值型的索引,有时候我们需要非数值型的索引。在过去我们一般采用非数组对象的键值对来模拟,这种方法虽然可以近似实现,但也存在一些问题。为此ES6推出了Set和Map这两种集合类型来解决非数值型索引需求。
在符号诞生之前,我们的对象属性名都是字符串,这不仅容易造成属性名的冲突,而且属性可以被轻易的更改。所以我们需要一种'私有名称'来创建非字符串类型的属性名来防止常规的更改。这就是JS已有的基本类型(字符串,数值,布尔,null,undefined)之外,新增基本类型(Symbol)的目的之一。