Javascript之面向对象编程--类的实现(1)

来源:互联网 发布:慈溪网络民生服务平台 编辑:程序博客网 时间:2024/06/07 23:45

/************************************
*Author:Java619
*Time:2007-01-25
*************************************/

Javascript可以使用function 关键字来定义一个类.在函数内通过this指针引
用的变量或方法都会成为类的成员,例如:

function Person(name){
  
var tmp="abc";
  
this.name=name;
  
this.sayHello=function(){
     alert(
"你好!"+this.name);
  }

}

 上面定义了一个Person类,它具有name属性,sayHello方法,它的所的实例都将含有
这两个成员,而tmp就不是它的成员.定义后可以用new关键字建立其实例
var p1=new Person("ceun");
现在就可以通过p1.sayHello()来调用sayHello方法了
我们来看下使用new创建对象的过程:
(1)当解释器遇到new操作符时便创建一个空对象;
(2)开始运行Person这个函数,并将其中的this指针都指向这个新建的对象;
(3)因为给对象不存在的属性赋值时,解释器就会为对象创建该属性,例如上例Person中,
当运行到this.name=name;这条语句时就会添加一个name属性,并把变量值赋给它,这样函
数执行就是初始化这个对象的过程,即实现构造函数的作用;
(4)当函数执行完后,new操作符就返回初始化后和对象.

通过这个过程Javascript中实现了面对对象的基本机制.由此可见,在Javascript中,function
的定义实际上就是实现一个对象构造器,是通过函数来完成的.这种方式的缺点是:
(a).将所有的初始化语句,成员定义都放到一起,代码逻辑不够清晰,不易实现复杂的功能.
(b).每创建一个对象的实例,都要执行一次构造函数.构造函数中定义的属性和方法总是会被
重复的创建,例如上例中的Person类,每创建一个它的实例,sayHello方法都会被创建一次,造成
内存的浪费.(下一节,将介绍另一种类的定义机制:利用prototype对象)

原创粉丝点击