`
wfsheep
  • 浏览: 15626 次
文章分类
社区版块
存档分类
最新评论

《javascript语言精粹》读书笔记一

阅读更多

前言

这是一本老道(douglas crockford)写的关于js的经典书籍,这本书的英文名称叫做《javascript:the good parts》,它诠释的是js这门语言的精彩部分,可以说他将js这门语言中最精华和有趣的部分都展现在大家面前了。

由于最近比较忙碌,在抽空搭建起blog了以后,直到现在才真正的提起劲头来准备真真的写点什么,其实也是为了给自己一个督促和鞭策,同时把在书中看到的觉得很棒的部分记录下来。

第二章 语法

本章介绍js的语法,这里没有什么特别的地方,语法是一门语言的入门基础,如果连语法都没有了解的话,更谈不上去了解这门语言的精粹了。
这里有几个值得注意的地方:

  1. js中没有整数和浮点数的概念,js中所有的数字都存储为64位浮点数,所以在js中1 === 1.0的结果是true
  2. for in语句会枚举对象所有的值(包括原型链上的值),这里需要用object.hasOwnProperty(variable)来对其进行检测。

第三章 对象

简单的来说,js中有两种类型,一种为简单类型,另一种为对象类型。简单类型包括:undefined, null, string, numnber,boolean。除此以外其他所有值均为对象。

对象的属性可以通过[]和‘.’运算符进行访问,其属性名只能是string,如果不是string也会被转换为string(es6中可以变为对象)。

||可以用来给对象或值设置默认值,而&&运算符可以容错,这主要是因为这两个运算的短路特性,并不需要特定去记忆,只要记忆其判断真假的情况就能轻松推出用法和结论。

除了简单类型外,对象都是通过引用来传递的,这是因为简单类型的变量名称和值都存放在栈中,而非简单类型的变量名称和指向堆中地址的指针存储在栈中。所以简单类型是值传递,而非简单类型是地址传递

原型只有在查询的时候才用到,所以当我们改变某个对象时,不会触及到他的原型,属性沿着原型链进行查找的过程称为委托

delete运算符可以删除对象上的属性,删除属性后可以将原型链上的属性都暴露出来。删除成功与否取决于DontDelete属性是否为true,这里可以参考kangax关于delete的研究

减少全局对象污染,可以采取两种方法:一、在全局对象上声明一个顶层对象,然后将相关的属性和方法都绑定到这个兑现下;二、采用闭包的方式。

更多内容请查看zakwu的小站

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics