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
投稿
猜你喜欢
MySQL实现SQL Server的sp_executesql
2008-11-20 15:01:00
Python如何破解压缩包密码
2023-09-01 19:15:41
java正则表达式解析html示例分享
2023-06-13 15:53:42
php+mysql实现简单登录注册修改密码网页
2024-04-30 08:49:54
python 自动批量打开网页的示例
2021-04-16 00:35:51
JavaScript table的排序类
2008-10-06 12:56:00
使用html+js+css 实现页面轮播图效果(实例讲解)
2024-02-24 01:48:44
python+playwright微软自动化工具的使用
2022-10-18 08:52:29
PHP PDOStatement::fetchObject讲解
2023-06-09 19:13:37
wxPython之解决闪烁的问题
2022-05-12 13:21:30
python状态机transitions库详解
2021-07-14 15:52:16
FCKeditor编辑器实战技巧
2007-10-08 21:13:00
PHP的mysqli_set_charset()函数讲解
2023-07-11 06:22:17
协同开发巧用gitignore中间件避免网络请求携带登录信息
2022-10-24 13:20:00
MySQL约束与索引概念详解
2024-01-28 17:06:39
使用vuex缓存数据并优化自己的vuex-cache
2024-04-30 10:46:33
使用Python docx修改word关键词颜色的操作
2022-01-15 01:47:34
关于 Flash Banner 设计的建议
2010-02-02 18:19:00
详解Python中常用的激活函数(Sigmoid、Tanh、ReLU等)
2022-03-25 22:45:51
Python中的作用域规则详解
2022-08-12 23:54:04