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

两种不同的JS写法比较(请大家来评论一下),高手多多指教
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>两种不同的JS写法比较</title>
  <script language="javascript" type="text/javascript">
  // 第一种写法,定义了方法,可直接调用,调用时开始分配内存(没有很足够的论据)
  js01 = {};
  js01.aa = {};
  js01.aa.msg = "abc";
  js01.aa.showMsg = function()
  {
  alert(js01.aa.msg);
  }
  // 第二种写法,只定义原型,调用时需要先创建对象,创建对象时占用内存,关闭IE时释放内存
  function js02()
  {
  }
  function js02.bb()
  {
  this.msg = "abc";
  }
  js02.bb.prototype.showMsg = function()
  {
  alert(this.msg);
  }
  </script>

</head>
<body>
  <input id="Button1" type="button" onclick="js01.aa.showMsg();" value="方法一" />
  <input id="Button2" type="button" onclick="var t = new js02.bb();t.showMsg();t = null;" value="方法二" />
</body>
</html>

------解决方案--------------------
前一种好些吧,起码看着舒服,但后一种看着比较规范
------解决方案--------------------
达到7预想的效果就是最好的。
------解决方案--------------------
我觉得两种写法的用意不同,不能比较。
第一种写法可用于实现命名空间。这种写法是创建了一个自定义的对象。
例如:你现在已经写了一个showMsg函数,但我现在又想再写一个现实另一种功能的showMsg函数,我就可以如下这样做。
js01.bb = {};
js01.bb.showMsg = function() {
.......
}

第二种写法就是在Javascript中自定义类,模拟面向对象的开发方式
var o1 = new js02.bb();
var o2 = new js02.bb();

总结:
第1种写法是创建了一个自定义的对象。
第2种写法是创建了一个自定义的类。

------解决方案--------------------
上面的
js01.bb = {};
js01.bb.showMsg = function() {
.......

改为
js01.cc = {};
js01.cc.showMsg = function() {
.......

以免和第二种写法中的bb混淆
这样命名空间js01.aa和js01.cc分别都有一个showMsg函数了
------解决方案--------------------
最好不是说明时候都有