javascript面向对象编程(二)
作者:canque 来源:CanQue@RSSIDEA 时间:2008-03-07 12:59:00
阅读上一篇:javascript面向对象编程(一)
[javascript模拟传统OOP]
javascript是一种非常灵活的语言,它的灵活度足以让你模拟传统的OOP。主流的javascript框架大都实现了这个功能,这里给出我的实现办法:OOP.js(2k)。
[Class.create,创建类]
这个参考了大名鼎鼎的prototype框架的实现,不过也稍有不同。创建类的方法如下:
<script language="JavaScript">
//定义class,名为baseClass
var baseClass = Class.create({
//类属性
info: 'This is the original info',
//构造函数,统一命名init
init: function(str){
alert('Create a new class, ' + str + '!');
},
//类方法
setInfo: function(str){
this.info = str;
},
getInfo: function(){
return this.info;
}
});
//实例化一个类,同时执行构造函数init
var myClass = new baseClass("well done"); //Create a new class,well done!
alert(myClass.info);//This is the original info
alert(myClass.getInfo());//This is the original info
myClass.setInfo('This is the new info');
alert(myClass.getInfo());//This is the new info
</script>
[Class.add,添加原型方法]
javascript可以为类或实例在类定义以外的地方添加方法,甚至是在实例化类以后。而给某实例添加方法有两类,一类是添加原型方法,一类是添加实例方法。详情请看下面这段代码:
<script language="JavaScript">
var myClass = Class.create({
num: 0,
add: function(num){
return this.num + num;
},
init: function(num){
this.num = num;
}
})
var obj = new myClass(100);
var newObj = new myClass(10)
alert(obj.add(50));//alert 150
//增加原形方法
//你也可以使用原生的javascript添加myClass.prototype.add=function(){}
myClass.add({
multi: function(num){
return this.num * num;
}
});
//基于该原型的实例obj,newObj都获得了multi方法
alert(obj.multi(50));//alert 5000
alert(newObj.multi(5)); //alert 50
//增加实例方法
obj.sub = function(num){
return this.num - num;
}
//实例方法只对该实例有效
alert(obj.sub(50));//alert 50
alert(newObj.sub(5)); //error! newObj.sub is not a function
</script>
标签:面向对象,编程,oop,javascript
0
投稿
猜你喜欢
css行高:line-height属性详解
2008-06-24 11:42:00
记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制
2010-04-07 22:35:00
Dreamweaver层使用八定律
2008-05-16 11:41:00
设计评论表单[译]
2009-03-25 20:41:00
ASP 字符串转数字格式
2009-08-19 17:18:00
document.createElement()用法及注意事项
2008-04-21 15:16:00
ASP编码问题的深入研究与解决方案(MSDN)
2007-10-25 11:54:00
分面搜索(Faceted Search)
2009-07-31 12:44:00
MySQL表设计优化与索引 (十)
2010-10-25 19:51:00
FrontPage2002简明教程四:网页超级链接
2008-09-17 11:23:00
JavaScript 数组的 uniq 方法
2007-12-07 18:28:00
超酷的js图片轮播渐变效果
2007-10-10 20:45:00
Oracle中Union与Union All的区别(适用多个数据库)
2012-07-21 15:13:27
流行WEB开发语言比较之ASP篇
2007-12-23 17:23:00
科学与艺术兼顾的有效网页视觉设计
2007-09-18 18:03:00
如何显示数据库里的图片?
2010-06-08 09:36:00
XMLHTTP 使用代理获取数据asp代码
2010-03-22 14:40:00
用CSS设置表格Table的细边框的比较好用的方法
2010-09-06 14:58:00
一个输入框提示列表效果
2008-03-09 18:53:00
ASP中实现分页显示的七种方法
2007-09-20 13:19:00