空空儿
Don't cry because it came to an end,smile because it happened.
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
posts - 43, comments - 121, trackbacks - 12
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
与我联系
发短消息
搜索
留言簿
(7)
给我留言
查看留言
我参与的团队
武汉.NET俱乐部(0/538)
随笔分类
(53)
AJAX(6)
ASP.NET(14)
C# (9)
DataBase(7)
JAVASCRIPT(14)
O/R Mapping(2)
正则表达式(1)
资源链接
CodeProject
interface
a plugins of jquery
jQuery
stringtemplate
testdriven
最新随笔
1. 在C#里使用属性
2. Read text file (txt, csv, log, tab, fixed length)
3. 批量写数据---将XML数据批量写入数据库
4. 对对象类型和调用方法属性进行存储以提升反射性能
5. 过程 sp_addlinkedsrvlogin,第 91 行解密过程中出错的解决办法
6. 生成大量随机字符串不同实现方式的效率对比
7. 用SQL SERVER 2005新提供的命令实现行列转换
8. APM (异步编程模型)
9. 利用宏让ERStudio生成代码文件
10. 上传文件到FTP
最新评论
1. re: C#中对IP的一些操作
EnableStatic
在Win2000下和WinVista下不能报错,返回错误84 ,博主知道怎么解决吗?
--ted.cnblogs
2. re: javascript 里Array的一些方法
学习了
--hi.cxo
3. re: APM (异步编程模型)
原来不catch后果如此严重啊
下次得小心点了
--shawnliu
4. re: JS 实现 ListBox 上下移动项
mark
--lystory
5. re: ORACLE 常用函数
多谢:)
--ebreezee
阅读排行榜
1. javascript 里Array的一些方法(4006)
2. 使用HtmlParser解析HTML(3266)
3. 生成大量随机字符串不同实现方式的效率对比(2809)
4. 用SQL SERVER 2005新提供的命令实现行列转换(1999)
5. AJAX TreeView(1946)
评论排行榜
1. AJAX TreeView(26)
2. 在NHibernate里执行存储过程(24)
3. 用SQL SERVER 2005新提供的命令实现行列转换(10)
4. 生成大量随机字符串不同实现方式的效率对比(10)
5. 批量写数据---将XML数据批量写入数据库(9)
javascript 里的类实现
摘抄自《javascript高级程序设计》一书。
javascript 是面向对象的语言,自然也有面向对象的一些特性。
一:构造函数方式
第一步选择类名,即构造函数的名字。下面的例子在构造函数里不创造对象,而是使用this,使用new 运算符调用构造函数的时候在执行第一行代码前先创建一个对象,这个对象只能用this访问,然后可以直接赋予this属性,默认情况下是构造函数的返回值,不必return。
例子:
function
Car(sColor,iDoors)
{
this
.color
=
sColor;
this
.doors
=
iDoors;
this
.showColor
=
function
()
{
alert(
this
.color);
}
;
}
var
oCar1
=
new
Car(
"
red
"
,
4
);
//
output red
var
oCar2
=
new
Car(
"
blue
"
,
3
);
//
output blue
上面的例子会为每个对象都创建独立的函数版本。再看下面的原型方式
二:原型方式:
该方式利用对象的prototype属性,可把它看成创建新对象所依赖的原型。下面的例子使用空构造函数设置类名,然后所有的属性和方法都直接赋予prototype属性。在调用new Car()的时候原型的所有属性都被立即赋予要创建的对象。
例子:
function
Car()
{
}
Car.prototype.color
=
"
red
"
;
Car.prototype.doors
=
4
;
Car.prototype.showColor
=
function
()
{
alert(
this
.color);
}
;
var
oCar1
=
new
Car();
//
output red
上面的例子在创建多个实例后,对象的属性值并没有变。再看下面的混合的构造函数/原型方式
三:混合的构造函数/原型方式:
联合使用构造函数和原型方式,就可以像其他程序设计语言杨创建对象。使用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性。
function
Car(sColor,iDoors)
{
this
.color
=
sColor;
this
.doors
=
iDoors;
}
Car.prototype.showColor
=
function
()
{
alert(
this
.color);
}
;
var
oCar1
=
new
Car(
"
red
"
,
4
);
var
oCar2
=
new
Car(
"
blue
"
,
3
);
oCar1.showColor();
//
output red
oCar2.showColor();
//
output blue
四:动态原型方法:
动态原型方法的基本想法和混合的构造函数/原型方式相同,唯一的区别是赋予对象方法的位置,看下面的例子:
function
Car(sColor,iDoors)
{
this
.color
=
sColor;
this
.doors
=
iDoors;
if
(
typeof
Car.initialized
==
"
undefined
"
)
//
***
{
Car.prototype.showColor
=
function
()
{
alert(
this
.color);
}
;
Car.initialized
=
true
;
//
***
}
}
上面的方法使用标志initialized来判断是否已给原型赋予任何方法,该方法只创建并赋值一次。
五:混合工厂方式
这种方式的目的是创建假构造函数,只返回一种对象的新实例:
function
Car()
{
var
tempCar
=
new
Object;
tempCar.color
=
"
red
"
;
tempCar.doors
=
4
;
tempCar.showColor
=
function
()
{
alert(
this
.color);
}
;
return
tempCar;
}
var
oCar1
=
new
Car();
由于在Car()构造函数内部调用了new运算符,所以将忽略构造函数外的第2个new 运算符。不建议使用这种方式。
可以使用prototype属性为任何已有的类定义新的方法。
posted on 2007-05-18 18:30
空空儿
阅读(153)
评论(0)
编辑
收藏
网摘
所属分类:
JAVASCRIPT
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
人才
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-05-26 00:54 编辑过
Google站内搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》
相关文章:
相关链接:
所属分类的其他文章:
JavaScript TreeView
让 FireFox 也支持 outerHTML
保存跨页面选择的数据
JavaScript里继承的实现
javascript 里的类实现
AJAX TreeView
javascript 里Array的一些方法
js 实现 将一个 ListBox 的项添加到另一个ListBox
JS 实现 ListBox 上下移动项
iframe自动适应文件大小
最新IT新闻:
MySpace CEO:明年广告营收仍会增长
2日科技博客精选:Windows占有率首次跌破90%
支付宝携手软银拓展日本市场
浏览器大战:Firefox首超20% IE跌破70%
Google Chrome 0.4.154.29 Beta 发布并透露Chrome扩展计划