····如何使用javascript进行面向对象的开发

··基础
1、用定义函数的方式定义类
在javascript中定义一个类的方法如下:
function class1(){
//类成员的定义及构造函数
}
这里class1即是一个函数也是一个类。作为函数,它可以理解为类的构造函数,负责初始化的工作。
2、使用new操作符获得一个类的实例
new 操作符不仅对内部类有效,对用户自定义的类也是同样的用法,对于上面定义的class1,也可以使用new来获取一个实例:
function class1(){
//类成员的定义及构造函数
}
var obj1 = new class1();
在javascript中,函数和类就是一个概念,当new一个函数时,就会返回一个对象。如果这个函数中没有初始化类成员,那就会返回一个空的对象。例如:
//定义一个hello函数
function hello(){
alert("hello");
}
//通过new一个函数获得一个对象
var obj = new hello();
alert(typeof(obj));
从运行结果看,执行了hello函数,同时obj也获得了一个对象的引用。事实上,当new一个函数时,这个函数就是所代表类的构造函数,其中的所有代码都可以看作是为了初始化一个对象而工

作。用于标识类的函数也称之为构造器。
3、使用方括号[]引用对象的属性和方法
在javascript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法)很简单,即:
对象名.属性(方法)名
除此之外,还可以用方括号的形式来引用:对象名["属性(方法)名"]
这里的方法名和属性名是一个字符串,而非原先点号后面的标识符,例如:
var arr = new Array();
//为数组添加一个元素
arr["push"]("abc");
//获得数组的长度
var len = arr["length"];
//输出数组的长度
alert(len);

arr.push("abc","def","ghi");
var len = arr.length;
alert(len);

上面两段代码的作用是一样的。通过上面的引用方法,可以看出,js中,引用属性(方法)的方式和数组相似。可以提现出js对象就是一组属性(方法)的集合这个性质。
这种方法适合不确定具体要引用哪个属性(方法)的场合,例如:一个对象用于表示用户资料,这时一个字符串表示要使用哪个属性,那就可以用这种方法来引用:
<script language="javascript" type="text/javascript">
<!--
//定义了一个User类,包括两个成员age和sex,并指定了初始值。
function User(){
this.age=21;
this.sex='male';
}
//创建User对象
var user = new User();
//根据下拉列表框显示用户的信息
function show(slt){
if(slt.selectedIndex!=0){
alert(user[slt.value]);
}
}
//-->
</script>


6、prototype原型对象
prototype对象是实现面向对象的一个重要机制。每个函数其实也是一个对象,它们对应的类是“function”。每个函数对象都具有一个子对象prototype。顾名思义,prototype标识了该函数

的原型,而函数也即是类,prototype实际上就是表示了一个类的成员的集合。当通过new来获取一个类的对象时,prototype对象的成员会成为实例化对象的成员。
既然prototype是个对象。那么就可以对其进行动态的修改:
function class1(){
//empty;
}
class1.prototype.method=function(){
alert("it's a test method");
}
var obj1 = new class1();
obj1.method();
····认识函数
函数的使用方法:
·function func1(..){...};
·var func2=function(..){...};
·var func3=function func4(..){...};
·var func5=new Function(..){...};
函数对象和其他用户所定义的对象有着本质的区别,这一类对象被称为内部对象,例如日期对象(Date),数组对象(Date),字符串对象(String)都是属于内部对象的。也就是在说,这

些内置对象的构造器是由JavaScript本身定义的;通过执行new Array()这样的语句返回一个对象,JavaScript内部有一套机制来初始化返回的对象,而不是由用户来指定对象的构造方式。

在JavaScript中,函数对象对应的类型是Function,正如数组对象对应的类型是Array,日期对象对应的类型是Date一样,可以通过new Function()来创建一个函数对象,也可以通过function

关键字来创建一个对象。
下面将函数对象的创建和数组对象的创建来比较:
创建myArray数组对象:var myArray=[];=====var myArray=new Array();
创建myFunction函数对象:function myFunction(a,b){return a+b;}=====var myFunction = new Function("a","b","return a+b");

function funcName(){
//函数体
}
var funcName=function(){
//函数体
}

···反射机制:
反射机制指的是程序在运行时能够获取自身的信息。例如一个对象能够在运行时知道自己有哪些方法和属性,这属于高级的面向对象程序设计的功能。