编写高质量javascript代码的68个有效方法 笔记5-数组和字典

  • 使用 for in 循环来枚举对象应当与顺序无关。

  • 使用数组而不是字典来存储有序集合。

  • 使用 for in 循环枚举对象的属性时,确保不要修改该对象。

  • 如果迭代一个对象时,对象的内容可能被修改,应该用 while 循环或者 for 循环代替 for in。

  • 循环只有一点优于迭代函数,就是有break和continue,后者只能通过低效的throw实现。

编写高质量javascript代码的68个有效方法 笔记4-对象和原型

  • 原型包括三个独立但相关的访问器。

    • C.prototype 用于建立由new C()创建的对象的原型。
    • Object.getPrototypeOf(obj) 是ES5中获取obj对象的原型对象的标准方法。
    • obj.proto 是获取obj对象的原型对象的非标准方法。
  • 类是由一个构造函数和一个关联的原型组成的一种设计模式。

  • 闭包变量是私有的,只能通过局部引用获取。将局部变量作为私有数据从而通过方法实现信息隐藏。

  • 留意父类使用的所有属性名,不要再子类中重用父类的属性名。

编写高质量javascript代码的68个有效方法 笔记3-使用函数

  • 函数可以独自实现其他语言多个不同的特性,例如:过程、方法、构造函数、类、模块。

  • 在方法调用中是由调用表达式自身来确定this变量的绑定的,绑定到this变量的对象被称为调用接受者(receiver)。

  • 使用 new 操作符来调用函数被视为构造函数。

  • 构造函数将一个全新的对象作为this变量的值,并隐式返回这个新对象作为调用结果,构造函数的主要职责是初始化该新对象。

  • 高阶函数是将函数作为参数或者返回值的函数。

  • 永远不要修改 arguments 对象,可以利用 [].slice.call(arguments)的方式获得一个复制。

  • bind 创建了一个新函数而不是修改了原函数。

CSS3实战 笔记2-CSS3新增的选择器

  • 新增了3个属性选择器。

    • E[foo^="bar"] 匹配元素E,且该元素定义了foo属性,属性值以bar开头。
    • E[foo$="bar"] 匹配元素E,且该元素定义了foo属性,属性值以bar结尾。
    • E[foor*="bar"] 匹配元素E,且该元素定义了foo属性,属性值包含bar。
  • 新增了结构伪类选择器,就是利用DOM实现元素过滤。

    • E:root 匹配E元素所在的根目录
    • E:nth-child(n) 匹配父元素中第n个位置的E元素,n可以是数字,odd、even、公式(2n、2n+3)
    • E:nth-last-child(n) 同上,但倒数
    • E:nth-of-type(n) 匹配父元素中第n个位置的E元素,且类型是E。
    • E:nth-last-of-type(n) 同上,但倒叙
    • E:last-child 匹配元素中最后一个E元素
    • E:first-of-type 匹配父元素中第一个E元素,且类型是E。
    • E:last-of-type 同上,但倒叙
    • E:only-child 匹配父元素只包含一个子元素,且元素是E。
    • E:only-of-type 匹配父元素中只包含一个类型为E的子元素。
    • E:empty 匹配E元素,且不包含子节点,文本也算是节点。
  • 新增了状态伪类选择器

    • E:enabled
    • E:disabled
    • E:checked

实战练习源码

编写高质量javascript代码的68个有效方法 笔记1-让自己习惯javascript

  • 严格模式(strict mode)允许在受限制的javascript版本中禁止使用一些问题较多易出错的特性。该特性向后兼容,但是旧引擎不会进行任何的严格模式检查,也不会出错。

  • javascript的数值类型只有一种,不管是整数还是浮点数,都归类为数字。事实上javascript中所有的数字都是双精度浮点数。

  • javascript中有7个假值:false、0、-0、””、NaN、null和undefined,其他都是真值。

  • 除了对象之外,javascript有5个原始值类型:布尔值、数字、字符串、null和undefined,但是对null进行typeof运算却得到 “object”,是因为ECMA标准描述其为一个独特的类型。

  • 可以在每个文件前缀加一个额外的分号’;’来避免受粗心连接的影响。

CSS3实战 笔记1-预览激动人心的CSS3

  • 在 CSS3 的支持上,谷歌的 chrome 和苹果的 safari 走在最前,其次是 opera 和 firefox 以及 IE9。

    • CSS1 主要定义了网页的基本属性,如字体、颜色、空白边等。
    • CSS2 添加了高级功能,例如浮动和定位,以及一些高级的选择器,例如子选择器、相邻选择器、通用选择器。
  • CSS3的主要新特性

    • 增强的选择器 - 在css2的基础上进行了增强。

    • 半透明度的实现 - RGBA和HSLA不单可以设定色彩,还可以设定透明度,另外也可以使用opacity。

    • 多栏布局 - 可以实现类似纸质报纸的多栏结构。

    • 多背景图 - 允许背景属性设置多个属性值、例如 background-img等,这样可以在一个元素上添加多层背景。如果设计复杂的网页效果就不用再添加多余的标签了。

    • 文字阴影 - 在CSS2中就有,但是没有被广泛应用,CSS3重新定义了该属性,并提供了新的跨浏览器方案使文字看起来更醒目。

    • 开放字体类型 - 允许引入字体文件来显示想要的字体效果。

    • 圆角 - 不需要背景图片就能实现给HTML元素添加圆角。

    • 边框图片 - 允许在元素的边框上设定图片。

    • 盒子阴影 - 不需要额外的标签就能实现HTML元素的阴影。

    • 媒体查询 - 定义不同的显示设备显示不同的样式。

  • 在规范尚未完善之前,各浏览器需要在属性前加入私有前缀。

    • webkit类型的浏览器(chrome、safari)的私有前缀是 -webkit-
    • gecko类型的浏览器(firefox)是 -moz-
    • opera浏览器是 -o-
    • IE浏览器(IE8+)是 -ms-

阅读大块头《javascript 权威指南》笔记 22-html5 api

  • 获取地理位置有 3 个方法: 1. navigator.geolocation.getCurrentPosition() 获取当前位置 2. navigator.geolocation.watchPostion() 不断监控当前位置 3. navigator.geolocation.clearWatch() 停止获取位置

  • 在有 GPS 的硬件设备上,可以获取精确的位置,或者是通过 Web 获取的,当浏览器提交 Internet IP 地址的时候,该服务能够直到该 IP 数据哪个城市,进而获取地址。

  • location.hash改变时,会触发window.onhashchange绑定的函数,很适合用来实现分页效果。

  • Blob是对大数据块的不透明引用或者句柄。