Es6中Map对象和Set对象的介绍及应用

前言

今天说一说ES6的Set对象和Map对象。以及这两个对象的应用。目前主流浏览器(chrome32、IE11、Safari7.1以及 Firefox 13以上)都对这2个对象做了基本的支持。因此,和css3一样,es6慢慢走进了前端开发的舞台,未来,我们可以不用再利用Babel对ES6语法进行编译就可以直接支持es6语法了。

Map 对象

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

HTML5之离线缓存的方法

前言

前几天,看到张鑫旭大神写了一篇关于离线缓存的技术的文章。我正好前段时间也用到了html5的manifest,虽然不是什么新的技术,但是感觉和张大神理解的有点偏差。张大神说html5 manifest要前后端配合使用。其实,目前html5 manifest也可以纯前端开发,不需要后端和服务器端的配合。

html5 manifest纯前端开发是如何做的呢?

之前的写法是

<html lang="en" manifest="haorooms.manifest">

canvas的ImageData对象的介绍及应用

前言

我前面有不少关于canvas的文章,其中最近一篇是关于canvas绘制video,其实canvas的功能还有很多,我们还可以利用canvas来过滤视频纯色背景,还可以获取图片背景颜色。这里用到了canvas的一个ImageData 对象,今天就介绍一下canvas的ImageData 对象及其应用!

canvas的ImageData 对象

ImageData对象中存储着canvas对象真实的像素数据,它包含以下几个只读属性:

es6的Promise及es7的Async/Await应用

前言

关于Promise 对象,阮一峰大神在Es6入门中写过,这里就不再累赘了!大家可以在本文底部,点击查看Promise 文档。其实Promise 最早是源于社区,jquery的deferred对象,也有类似Promise的实现。我之前在判断文章中所有图片是否加载完成一文中有所提及!今天主要讲讲Promise及Async/Await的一些应用。

简单的停顿执行

javascript的单线程事件循环及多线程介绍

前言

其实我前面文章对于改变js的执行顺序及多线程都有相关介绍!例如,我们可以用setTimeout(fn,0)改变代码执行循序,文章最后也提及了Event Loop(事件循环)。同时,js的Worker可以模拟实现多线程,我前面文章也有类似的应用!例如:js Worker解决ios下面倒计时手滑问题 这篇文章,我详细介绍一下js单线程事件循环,及多线程的实现。

JavaScript单线程原因

JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这和JavaScript的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。例如:假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?