javascript

Created By: xiong
Last Modified: 08/04/06
Summary: A jetpak created on Sat, 29 Jul 2006 07:52:27 GMTjavascript中的自定义对象
javascript中的自定义对象
关键词 : javascript 对象设计 对象定义
一、javascript中对象的定义方式有两种
1)第一种是FFN方式。
其中第一个F(function)定义类的基本结构,第二个F(function)就是类中方法定义,而N就是指用new来在类模板的基础上创建对象。在FF过程中,用到的最重要的属性就是this
。例子:
2)第二种方式是用对象生成器(OI,object initializer
)。
这种方式直接简单,对象架构定义、属性的初始化一次完成,不用new关键字。例子:
object
二、定义外的其他明面
1)对比。FFN方式的对象定义可以说是OOP编程的类定,可以用来建立多个实例,同时这种定义方式是可以被继承的(使用prototype属性)。OI方式是一对一的方式,简单直接。
2)FFN与prototype属性。继续使用1)中的例子。需要注意的是,只有FFN方式定义的"类"有prototype属性,而生成的具体对象是没有的。这种增加或重写会对该类的所有实例产生作用
。
首先,扩展(即增加或重写)类的属性和方法。
Customer
.
prototype
.nickname=null;
然后,就是在类生成的所有对象中使用了:
Customer1.nickname="Lee";
……
Customer9.nickname="Jack";
3)对具体对象的扩展
对于FFN生成的某个具体对象或用OI生成的具体对象,可以通过直接用赋值
的方式增加或重写该对象的(不会影响其他对象实例)
属性或方法。例子(重写“2)”中BODY内的脚本):
4)类的静态成员
就是OOP中“属于”类的成员,在类定义时就声明并初始
化,在调用时用类名来调用,而不是具体对象名。就是因为它属于类,属于类的所有实例,而不是某个具体实例。此时不是对类的原型(prototype)的扩展,而是类的原型定义的一部分。所以不能用prototype属性。
首先,类体外声明并初始化:
Customer.NATIONALITY="AMERICA";
然后,就是在类生成的所有对象中使用了:
alert(Customer.NATIONALITY);
只有静态方法能操作静态属性成员,普通方法不能操作静态成员;而静态方法也只能操作静态属性。
Customer.CHANGENATIONALITY=function(){
this.NATIONALITY="CHINA";
};
this.NATIONALITY="CHINA";
};
如果静态方法要操作非要操作非静态属性,需要给静态函数传递对象实例作为参数:
//customer是对象实例
Customer.CHANGENATIONALITY=function(customer){
this.NATIONALITY="CHINA";
customer.name="newNameUnknown";
};
Customer.CHANGENATIONALITY=function(customer){
this.NATIONALITY="CHINA";
customer.name="newNameUnknown";
};
……
//调用
Customer1
=new Customer("Mike","8043335555");
Customer
.CHANGENATIONALITY(Customer1
);
From:
http://xpring.bokee.com/4750663.html[3.9]色不醉人,人自醉 - 齐鲁影音论坛- www.qiluclub.com - 电影,电视,电台,音乐,视频,美女,图片,游戏,笑话,体育,免费电影,mtv,mp3,flash
![[3.9]色不醉人,人自醉 - 齐鲁影音论坛- www.qiluclub.com - 电影,电视,电台,音乐,视频,美女,图片,游戏,笑话,体育,免费电影,mtv,mp3,flash](http://bbs.ccidnet.com/attachment/images/2005/10/17/img1129562949.jpg)
http://www.qiluclub.com/read.asp?id=18940

