JavaScript

A collection of 9 posts

JavaScript

理解 Promise (WIP)

一直想写篇文章帮助初学者理解 Promise。Promise 这个东西总是被人和异步回调这些东西联系在一起理解,而异步回调这些东西本身就已经很难理解了,再在上面叠上一个 Promise 理解起来更是难上加难。所以我考虑用另一种形式形式来表达 Promise 的特点,希望能对理解 Promise 有所帮助。 下面开始: 一、用 Promise 处理值 假如我们现在有一个数字: 4 假如我们又有一个操作叫 加五: function add_five(n) { return n + 5 } 假如我们还有一个操作叫 开平方: function square_root(n) { return Math.sqrt(n) } 最后我们也有一个操作叫输出: function print(n)

解读 webconponents.js 中对 ES6 WeakMap 的 shim (一)
JavaScript

解读 webconponents.js 中对 ES6 WeakMap 的 shim (一)

ES6 中对 WeakMap 的要求主要是对 key(非 null 对象) 仅保留弱引用,且取值是 O(1) 复杂度,这导致了它的两个特性: 不能求大小,更不能枚举。 当 key 对象不被其他变量引用时,会被垃圾回收系统回收。 按说这种关乎内存管理的对象是没法 shim 的。但是webcomponents.js 对 WeakMap 有一个很奇妙的 shim。经过阅读后整理原理如图:

JavaScript

在浏览器中解析任意 URL 的组成部分

浏览器的location对象拥有很多方便的属性用于获取当前URL的组成部分: location.protocol:协议名 location.username:用户名 location.password:密码 location.hostname:主机名 location.port:端口号 location.host:主机名和端口号 location.pathname:路径 location.search:查询串 location.hash:书签名 在较新(未测试,估计是支持跨域XHR之后的)浏览器中,还有 location.origin:协议名、主机名和端口号 可以使用。 可以看出location的属性是非常方便的URL解析器。但是其局限是只能解析当前URL的组成部分。如果我们要解析任意URL的组成部分,使用location是无法完成的。location的构造器Location是无法在JavaScript中手动创建的。所以如果我们要解析任意URL还需要找别的办法。