日期:2014-05-16  浏览次数:20376 次

早该知道的7个JavaScript技巧

文章转自:http://www.cnblogs.com/liupeizhi/archive/2012/01/07/2315791.html

?

简洁写法

JavaScript里我最喜欢的一种东西就是生成对象和数组的简写方法。在过去,如果你想创建一个对象,你需要这样:

  1. var? car ?=? new ?Object();? ?
  2. car.colour ?=? 'red' ;? ?
  3. car.wheels ?=? 4 ;? ?
  4. car.hubcaps ?=? 'spinning' ;? ?
  5. car.age ?=? 4 ;??

下面的写法能够达到同样的效果:

  1. var? car ?=?{? ?
  2. colour:'red',? ?
  3. wheels:4,? ?
  4. hubcaps:'spinning',? ?
  5. age:4? ?
  6. }??

简单多了,你不需要反复使用这个对象的名称。这样car就定义好了,也许你会遇到invalidUserInSession的问题,这只有你在使用 IE时会碰到,只要记住一点,不要右大括号前面写分号,你就不会有麻烦。另外一个十分方便的简写是针对数组的。传统的定义数组的方法是这样:

  1. var? moviesThatNeedBetterWriters ?
  2. =? new ?Array(? ?
  3. ?'Transformers','Transformers2','Avatar','Indiana ?
  4. Jones?4'? ?
  5. );??

简写版的是这样:

  1. var? moviesThatNeedBetterWriters ?
  2. =?[? ?
  3. 'Transformers','Transformers2','Avatar','Indiana ?
  4. Jones?4'? ?
  5. ];??

对于数组,这里有个问题,其实没有什么图组功能。但你会经常发现有人这样定义上面的 car ,就像这样

  1. var? car ?=? new ?Array();? ?
  2. car['colour']?=?'red';? ?
  3. car['wheels']?=?4;? ?
  4. car['hubcaps']?=?'spinning';? ?
  5. car['age']?=?4;??

数组不是万能的;这样写不对,会让人困惑。图组实际上是对象的功能,人们混淆了这两个概念。另外一个非常酷的简写方法是使用与三元条件符号。你不必写成下面的样子:

  1. … ?
  2. var?direction;? ?
  3. if(x? < ? 200 ){? ?
  4. direction ?=? 1 ;? ?
  5. }?else?{? ?
  6. direction ?=?-1;? ?
  7. }? ?
  8. …?

你可以使用三元条件符号简化它:

  1. var? direction ?
  2. =? x ? < ? 200 ???1?:?-1;??

当条件为true 时取问号后面的值,否则取冒号后面的值。

用JSON形式存储数据

在我发现JSON之前,我使用各种疯狂的方法把数据存贮在JavaScript固有的数据类型里面,例如:数组,字符串,中间夹杂着容易进行拆分的标志符号以及其它的令人讨厌的东西。Douglas Crockford 发明了JSON 之后,一切全变了。

使用JSON,你可以使用JavaScript自有功能把数据存贮成复杂的格式,而且不需要再做其它的额外转换,直接可以访问