- 6.1 JavaScript 中支持面向对象的基础 6.1.1 用定义函数的方式定义类 在面向对象的思想中,最核心的概念之一就是类。一个类表示了具有相似性质的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,即对象。 在 JavaScript 中定义一个类的方法如下: function class1(){ //类成员的定义及构造函数 } 这里class1 既是一个函数也是一个类。可以将它理解为类的构造函数,负责初始化工作。 6.1.2 使用new 操作符获得一个类的实例 在前面介绍基本对象时,已经用过new 操作符,例如: new Date(); 表示创建一个日期对象,而Date 就是表示日期的类,只是这个类是由JavaScript 内部提供的,而不是由用户定义的。 new 操作符不仅对内部类有效,对用户定义的类也同样有效,对于上节定义的class1,也可以用new 来获取一个实例: function class1(){ //类成员的定义及构造函数 } var obj1=new class1(); 抛开类的概念,从代码的形式上来看,class1就是一个函数,那么是不是所有的函数都可以用new来操作呢?是的,在 JavaScript中,函数和类就是一个概念,当对一个函数进行new 操作时,就会返回一个对象。如果这个函数中没有初始化类成员,那就会返回一个空的对象。例如: //定义一个hello 函数 function hello(){ alert("hello"); } //通过new 一个函数获得一个对象 var obj=new hello(); alert(typeof(obj)); 从运行结果看,执行了hello 函数,同时obj 也获得了一个对象的引用。当new 一个函数时,这个函数就是所代表类的构造函数,其中的代码被看作为了初始化一个对象。用于表示类的函数也称为构造器。 6.1.3 使用方括号([ ])引用对象的属性和方法 在 JavaScript 中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法)很简单,如: 对象名.属性(方法)名 还可以用方括号的形式来引用: 对象名["属性(方法)名"] 注意,这里的方法名和属性名是一个字符串,不是原先点(? )号后面的标识符,例如: var arr=new Array(); //为数组添加一个元素 arr["push"]("abc"); //获得数组的长度 var len=arr["length"]; //输出数组的长度 alert(len); 图6.1 显示了执行的结果。 由此可见,上面的代码等价于: var arr=new Array(); //为数组添加一个元素 arr.push("abc"); //获得数组的长度 var len=arr.length; //输出数组的长度 alert(len)...