谁动了我的代码
抽象即是空,空即是抽象。
posts(43)
comments(24)
trackbacks(0)
BlogJava
联系
聚合
管理
News
所有文章版权归我所有,转载请注明出处,谢谢!
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Android开发(5)
C/C++(1)
DataBase(3)
Java(16)
JavaScript(14)
WEB前端(1)
编程杂项(2)
网络(1)
随笔档案
2016年5月 (1)
2011年2月 (1)
2010年6月 (3)
2010年5月 (1)
2009年12月 (2)
2009年11月 (1)
2009年10月 (2)
2009年6月 (2)
2009年5月 (1)
2009年4月 (2)
2009年3月 (4)
2009年2月 (1)
2009年1月 (1)
2008年12月 (1)
2008年11月 (1)
2008年10月 (4)
2008年9月 (2)
2008年5月 (5)
2008年3月 (3)
2007年12月 (2)
2007年10月 (1)
2007年9月 (2)
2007年5月 (1)
搜索
最新评论
1. re: Android之ImageView载入网络上的图片
222222222222222222222
--2222222222222222222222222222
2. re: Log4j自带Log Viewer的用法
执行你的根本不行,乱错帖子就在这乱贴,tmd
--asdf
3. re: Android之使用私有存储
getDir方法创建的文件,会有个app_前缀,请问这怎么去掉呢?
--就是宝宝
4. re: Android通用事件造成的生命周期变化情况
我相信以后Android将成为越来越多设备的OS,不光是手持上网设置,冰箱、洗衣机都有可能采用Android。
--淘宝网女装春装新款
5. re: Android通用事件造成的生命周期变化情况
不错
--歌瑞尔内衣
阅读排行榜
评论排行榜
View Post
面向对象的JavaScript (一、对象基础,使用函数来模拟类)
通过一个例子可以很直观的表述本主题,所以没有任何其他的说明文字,请看代码吧。
1
function
Person(name, age)
{
2
3
//
私有变量(private variables)
4
var
myName
=
name;
5
var
myAge
=
age;
6
7
//
公共属性(public properties)
8
this
.name
=
myName;
9
this
.age
=
myAge;
10
11
//
私有函数(private functions)
12
function
getMyName()
{
13
return
myName;
14
}
;
15
16
function
getName()
{
17
return
name;
18
}
;
19
20
var
getMyAge
=
function
()
{
21
return
myAge;
22
}
;
23
24
var
getAge
=
function
()
{
25
return
age;
26
}
;
27
28
//
特权方法(privileged methods)
29
this
.getName
=
function
()
{
30
return
this
.name;
31
//
return myName; 可以访问私有变量
32
//
return name; 可以访问构造函数参数(其参数本质也是私有变量)
33
//
return getMyName(); 可以访问私有函数
34
//
return getName(); 可以访问私有函数
35
}
;
36
37
this
.getAge
=
function
()
{
38
return
getAge();
39
}
;
40
41
this
.getRealAge
=
function
()
{
42
return
this
.age;
43
}
;
44
}
45
46
//
公共方法(public methods)
47
Person.prototype.acceptName
=
function
(param)
{
48
this
.name
=
param;
49
//
name = param; 公共方法不能访问私有变量
50
//
myName = param; 公共方法不能访问私有变量
51
}
;
52
53
//
原型属性(prototype properties)
54
Person.prototype.legs
=
2
;
55
56
//
静态属性(static properties)
57
//
整个类只有一个静态属性,各个对象共享同一个静态属性值
58
Person.arms
=
2
;
59
60
Person.getArms
=
function
()
{
61
return
Person.arms;
62
//
return this.arms; 可以使用this来指代Person对象本身
63
}
;
64
65
/**/
/*
66
Person是一个逻辑上的类,他的本质是一个Function,在JavaScript中类是由Function来模拟的,所以Person还是一个Function的实例。而arms和getArms方法是一个Function对象实例上的属性和方法,是Person对象所特有的,所以本例可以使用Person.arms来引用,同时在getArms方法中,可以使用this.arms来引用,因为getArms是Person对象上的方法,在该方法内部this指代Person对象自身。
67
*/
68
alert(Person.getArms());
69
70
var
pa
=
new
Person(
"
Teddy
"
,
25
);
71
72
//
alert(pa.myName); 不能访问私有变量
73
74
alert(pa.name);
75
76
alert(pa.getAge());
77
78
pa.acceptName(
"
Born
"
);
79
80
alert(pa.getName());
81
82
var
pb
=
new
Person(
"
John
"
,
18
);
83
84
//
运行时动态加入方法
85
Person.prototype.acceptAge
=
function
(param)
{
86
this
.age
=
param;
87
}
;
88
89
//
pb对象也可以调用动态添加的方法
90
pb.acceptAge(
30
);
91
92
alert(pb.getAge());
93
94
alert(pb.getRealAge());
95
96
//
运行时覆盖已定义方法
97
Person.prototype.acceptName
=
function
(param)
{
98
return
param;
99
}
;
100
101
//
所有已创建对象都自动继承被覆盖的方法
102
alert(pa.acceptName(
"
Black
"
));
103
104
alert(pa.getName());
105
106
alert(pa.legs);
107
108
//
运行时改变原型属性值
109
Person.prototype.legs
=
4
;
110
111
//
所有已创建对象都自动继承被改变的原型属性值
112
alert(pb.legs);
113
114
//
运行时将原型属性改为公共方法
115
Person.prototype.legs
=
function
()
{
116
return
4
;
117
}
;
118
119
//
所有已创建对象都自动继承原型属性到公共方法的改变
120
alert(pa.legs());
posted on 2008-09-03 19:09
Eric Song
阅读(1279)
评论(1)
编辑
收藏
所属分类:
JavaScript
View Comments
#
re: 面向对象的JavaScript (一、对象基础,使用函数来模拟类)
回复
更多评论
不错,等待下一篇
2008-09-04 11:28 |
HiMagic!
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
关于样式表对象style与currentStyle的区别
关于JavaScript的cloneNode方法对于节点上的事件clone问题的研究。
参考Prototype的Class.create写了一个类似的实现,但是不是Ruby like OOP,使用上更像Java。
对JavaScript的变量作用域的理解
IE document compatMode
JavaScript对form及form中的引用。
JavaScript注意事项(不定期更新)
在定义一个js类的时候,为什么要设置该类的prototype属性为它所要继承的类的实例对象
JavaScript 类型转换注意事项
面向对象的JavaScript(二,TSS上的一篇文章,先借鉴一下)