两种不同的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函数了
------解决方案--------------------最好不是说明时候都有