从谷歌"名猿"Addy Osmani一行代码中学到的东西

谷歌某大佬通过一行知识量包含极丰富的 js 代码实现了一个魔法小功能:给页面所有元素加一个彩色外边框 [].forEach.call($$("*"), function (a) { a.style.outline = "1px solid #" + (~~(Math.random() * (1 << 24))).toString(16); }); 单行形式: [].forEach.call($$("*"), function (a) { a.style.outline = "1px solid #" + (~~(Math.random() * (1 << 24))).toString(16); }); 将其贴到 chrome 的 console 中即可看到效果 代码解析 $$("*"); document.querySelectorAll("*"); document.all; 以上三种写法是相同效果,都相当于通过选择器的方式获取页面所有元素。第三种是较不规范的方式,不建议使用。$$是现代浏览器API的一部分,比如$$(‘a’)可以获取页面所有的 a 标签元素 接下来,通过上面选择器获取到的是一个 NodeList,是一种类似于数组 Array,但它并未实现很多 Array 的接口,所以不能使用$$(’*’).forEach 来遍历结果,类似的还有 arguments,也是类似于 Array,但并不是数组 这时需要通过 call()或者 apply()可以使得非数组对象来调用数组的方法 [].forEach.call($$("*"), function (e) {}); 以上即实现了遍历页面的每一个元素,并可以将获得的非数组元素使用数组的遍历方法来取到每一个元素 e a.style.outline = "1px solid #" + color; outline 是 CSS 的一个属性,它是在 CSS 盒模型以外,所以它不会影响元素的 size 以及元素在 larout 中的 position...

2017-10-17 16:45:17 · 1 分钟 · 130 字

ECMAScript6(ECMAScript2015)学习笔记

ECMAScript 6(以下简称 ES6)是 JavaScript 语言的下一代标准。因为当前版本的 ES6 是在2015 年发布的,所以又称 ECMAScript 2015。 一、ES6 简介 ECMAScript 6(以下简称 ES6)是 JavaScript 语言的下一代标准。因为当前版本的 ES6 是在2015 年发布的,所以又称 ECMAScript 2015。 即 ES6 === ES2015 二、ES6 转码器 Babel是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行。(chrome 已支持 ES6 解释,亲测可用)大家可以选择自己习惯的工具来使用使用 Babel,具体过程可直接在Babel 官网查看: 三、常用特性 let / const(与传统 var 对比) class / extends / super(面向对象) arrow functions(箭头函数) template string(模板字符串) destructing(解构) default(默认值) rest / arguments(函数参数) 四、特性详解 (1)let 与 var 类似,都是用来声明变量的,但在实际运用中他俩都有各自的特殊用途。 var name = "tom"; while (true) { var name = "bar"; console....

2016-12-16 15:34:31 · 4 分钟 · 734 字