浅谈javascript类设计模式
下面我主要通过边讲例子边讲优缺点的方式,讲述在JavaScript中如果设计一个类,并得到一个比较合理的类设计模式。
第一个例子:
第二个例子:
第三个例子:
上面3个例子,可能是你常用的创建类的方法,然而这并不是一个良好的设计模式,在参考了大量书籍和网上的例子后,我们可以得到一个比较好的设计模式:
第四个例子:
优点:在所定义类内只写构造函数,而成员(属性和方法)使用无类型对象来定义,以列表的方式实现了所有的属性和方法,并且可以在定义的同时初始化属性的值。下面是第四个例子的全部代码:
提示:您可以先修改部分代码再运行,对于jquery等代码需要运行后刷新一次
第一个例子:
function car(){
//构造函数
}
car.prototype.wheel = 3;
car.prototype.run = function(){
alert("我在跑");
}
car.prototype.stop = function(){
alert("我停止了");
}
缺点:每定义一个属性或方法,都需要使用一次car.prototype,不仅代码体积变大,而且易读性也不够。 //构造函数
}
car.prototype.wheel = 3;
car.prototype.run = function(){
alert("我在跑");
}
car.prototype.stop = function(){
alert("我停止了");
}
第二个例子:
function car(){
//构造函数
car.prototype.wheel = 3;
car.prototype.run = function(){
alert("我在跑");
}
}
car.prototype.stop = function(){
alert("我停止了");
}
缺点:类可以在function定义的函数体中添加成员,又可以用prototype定义类的成员(属性和方法),代码显得混乱。 //构造函数
car.prototype.wheel = 3;
car.prototype.run = function(){
alert("我在跑");
}
}
car.prototype.stop = function(){
alert("我停止了");
}
第三个例子:
function car(){
//构造函数
car.prototype.wheel = 3;
car.prototype.run = function(){
alert("我在跑");
}
car.prototype.stop = function(){
alert("我停止了");
}
}
缺点:将所有的初始化语句,成员定义放在一起,代码逻辑不够清晰,不易实现复杂的功能;每创建一个类的实例,都要执行一次构造函数。构造函数中定义的属性和方法总被重复的创建。 //构造函数
car.prototype.wheel = 3;
car.prototype.run = function(){
alert("我在跑");
}
car.prototype.stop = function(){
alert("我停止了");
}
}
上面3个例子,可能是你常用的创建类的方法,然而这并不是一个良好的设计模式,在参考了大量书籍和网上的例子后,我们可以得到一个比较好的设计模式:
第四个例子:
function car(){
//构造函数
}
car.prototype = {
wheel:3,
run:function(){
alert("我在跑");
},
stop:function(){
alert("我停止了");
}
}
//构造函数
}
car.prototype = {
wheel:3,
run:function(){
alert("我在跑");
},
stop:function(){
alert("我停止了");
}
}
优点:在所定义类内只写构造函数,而成员(属性和方法)使用无类型对象来定义,以列表的方式实现了所有的属性和方法,并且可以在定义的同时初始化属性的值。下面是第四个例子的全部代码:
提示:您可以先修改部分代码再运行,对于jquery等代码需要运行后刷新一次
上一篇:网页中怎样让物体产生投影
下一篇:javascript利用反射取得一个对象的所有属性和方法
全部评论:
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“
浅谈javascript类设计模式
”的原作者,若侵犯您的版权,请与我联系!在此请您原谅我的幼稚和无知!联系方法:email:ahuinan@21cn.com QQ:106494262
感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
文章档案
- 作者:阿会楠
- 来源:搜索吧
- 日期:2007-10-22 9:23:00
- 点击:1446
网友投票(您觉得这篇文章怎样?)
请稍侯......
请稍侯......
文章阅读排行
随便看看
最新评论
- 不錯的東東,
打包demoupload.asp,js部分尾多了一個逗號
有空多交流:QQ 37787553 - 不錯的東東,
打包demoupload.asp,js部分尾多了一個逗號
有空多交流:QQ 37787553 - 站长 好!
- 网站不错<br>不知道URl是用什么生成的?
- update A
set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - update A
set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 例子举得不好,为什么不直接用update解决呢?
update set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 例子举得不好,为什么不直接用update解决呢?
update set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 恭喜站长改进 支持
- 改版了? 牛叉
- 网站不错^-^ 多多向站长学习
- 212
- 啊 是