JavaScript模式化编程

 

我不知道现在生活中的苦是不是对自己是一种好处,我也不知道现在的好是不是坏处,希望一切的一切会更好。

 

我想写这篇文章好久了,有的时候都不知道自己从那写起。从基础写起,又怕被喷,太难了,又怕自己写的不好,又被喷。最好我想想还是写下这篇文章,可以说这是我干这么多年总结下来的结晶了。

 

JavaScript模式

 

说起这个,如果是程序员的应该都不陌生,我只不过他大家平时用到的,写下来系统化罢了,没什么大不了,嘿嘿。

 

好了说了半天,大家以为我在写心情,嘿嘿说说正题吧。

 

1.基本原则

  原则问题不能变,写模式唯一的好处就是可维护性好,编写出让人羡慕的代码才会是好代码。

  1.1 编写可维护的代码

    特性:阅读性好,具有一致性,预见性好,看起来如同一个人编写的,有文档

  1.2 尽量少用全局变量

    全局变量的坏处真是大大的,为了一个全局变量,有多少bug产生,有多少程序员要加班加点的干活。

    我这里就写一个原因,全局变量多的代码不好移植。页面上会有很多其他开发人员编写的代码。如果其中一个广告合作伙伴的脚本有x这个全局变量,你的脚本大量使用x的话,那么多发生什么事情,

    大家可见一斑了,非常的恶劣的bug。

    写一段代码:

<script type="text/javascript">

<!--

globleParam = "HellWorld";

console.log(globleParam);

console.log(window.globleParam);

console.log(window["globleParam"]);

console.log(this.globleParam);

//-->

</script>

    上面写了关于全局变量的调用

  1.3 变量释放的难题

    使用var创建的全局变量不能删除

    不使用var创建的隐含全局变量可以删除

    这说明隐含全局变量严格来讲不是真正的变量,而是全局对象的属性,属性可以通过delete操作符删除,但变量不可以

 

    例子:

      <script type="text/javascript">

  <!--

var global_1 = 1;

global_2 = 2;

(function(){

global_3 = 3;

}());

 

delete global_1;

delete global_2;

delete global_3;

 

console.log(typeof global_1);

console.log(typeof global_2);

console.log(typeof global_3);

  //-->

  </script>

 

  1.4 简单的访问全局变量

  var global = (function(){

return this;

  }());

  有的时候,为了快速得到全局对象,必须用这种方式

  1.5单一var模式

  这个可以说我是看jquery框架时候,感觉的。然后在网上查询了一下,发现大家也在用这个模式,很简单,就是将变量都放到一个var中,这样好处避免出现上面的全局变量问题还有就是变量复写的问题

 

  1.6 for循环的小细节

  在for中,要使用单一var这个模式,这个会节省很多不必要的计算时间的问题

  比如:

  for(var i = 0 ,max = myarray.length;i<max;i+=1){

 

  }

  1.7 for-in中的小判断

  for-in要进行属性检查,这个避免clone方法等不必要的方法进行操作

 

  <script type="text/javascript">

  <!--

  var people = {

name:'chenhailong',

age:'30',

sex:'male'

  }

  if(typeof Object.prototype.clone === 'undefined')

  {

Object.prototype.clone = function(){};

  }

  for(var i in people)

  {

if(people.hasOwnProperty(i)){

console.log(i,":",people[i]);

}

  }

    for(var i in people)

  {

console.log(i,":",people[i]);

  }

  //-->

  </script>

 

  1.8 在程序中要用“===”进行判断

  这样加上类型判断

  1.9 避免使用eval()

  eval是魔鬼,eval内部可以看作是全局变量,和上面的全局模式一样,尽量少用。

  1.10关于parseInt()的思考

  下面举一个例子:

    <script type="text/javascript">

  <!--

    var i = "09", 

   j = "06";

i = parseInt(i);

j = parseInt(j);

console.log(i,j);

i = new Number("09");

j = new Number("06");

console.log(i.toString(),j.toString());

i = "09";

j = "06";

i = parseInt(i,10);

j = parseInt(j,2);

console.log(i,j);

  //-->

  parseInt()的时候一下,要注意进制问题

  1.11添加Doc文档

  YUIDoc范例:

  我自己写了文章,下面提供链接

  http://chenhailong.iteye.com/admin/blogs/1724746

  你也出的javasscript source 一定要生成YUIDoc文档的,我希望大家这样,袁芳你怎么看?

 

 1.12 我不知道大家用没用过JSLint,一个非常好的工具,可以这样说,我现在所有写的规范模式,JSLint上面都有检查,如果你不符合上面写的东西,JSLint就是警告或者报错哦

 

我也强烈建议大家使用这个软件,原因有很多,最主要的是方便和减少bug的量,让你写出的代码大家去羡慕去吧。

 

 

太长了,我就写到这里,可以参看后文。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值