标签:
这是一本老道(douglas crockford)写的关于js的经典书籍,这本书的英文名称叫做《javascript:the good parts》,它诠释的是js这门语言的精彩部分,可以说他将js这门语言中最精华和有趣的部分都展现在大家面前了。
由于最近比较忙碌,在抽空搭建起blog了以后,直到现在才真正的提起劲头来准备真真的写点什么,其实也是为了给自己一个督促和鞭策,同时把在书中看到的觉得很棒的部分记录下来。
本章介绍js的语法,这里没有什么特别的地方,语法是一门语言的入门基础,如果连语法都没有了解的话,更谈不上去了解这门语言的精粹了。
这里有几个值得注意的地方:
1 === 1.0
的结果是truefor in
语句会枚举对象所有的值(包括原型链上的值),这里需要用object.hasOwnProperty(variable)
来对其进行检测。简单的来说,js中有两种类型,一种为简单类型,另一种为对象类型。简单类型包括:undefined, null, string, numnber,boolean。除此以外其他所有值均为对象。
对象的属性可以通过[]和‘.’运算符进行访问,其属性名只能是string,如果不是string也会被转换为string(es6中可以变为对象)。
||可以用来给对象或值设置默认值,而&&运算符可以容错,这主要是因为这两个运算的短路特性,并不需要特定去记忆,只要记忆其判断真假的情况就能轻松推出用法和结论。
除了简单类型外,对象都是通过引用来传递的,这是因为简单类型的变量名称和值都存放在栈中,而非简单类型的变量名称和指向堆中地址的指针存储在栈中。所以简单类型是值传递,而非简单类型是地址传递
原型只有在查询的时候才用到,所以当我们改变某个对象时,不会触及到他的原型,属性沿着原型链进行查找的过程称为委托。
delete运算符可以删除对象上的属性,删除属性后可以将原型链上的属性都暴露出来。删除成功与否取决于DontDelete属性是否为true,这里可以参考kangax关于delete的研究。
减少全局对象污染,可以采取两种方法:一、在全局对象上声明一个顶层对象,然后将相关的属性和方法都绑定到这个兑现下;二、采用闭包的方式。
更多内容请查看zakwu的小站
标签:
原文地址:http://blog.csdn.net/wfsheep/article/details/43957155