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

/************************************
*Author:Java619
*Time:2007-01-25
*************************************/
Javascript之面向对象编程--类的实现(2)

这一节我介绍利用prototype对象为类添加成员的机制.

当new一个function时,prototype对象的所有成员将自动赋给所创建的对象,例如:

// 定义一个只有name属性的Person类
function  Person(name) {
  
this.name=name;
}

// 下面使用函数的prototype属性为类定义新成员
Person.prototype.sayHello = function () {
   alert(
"你好!"+this.name);
}

// 创建类的一个实例
var  p1 = new  Person( " ceun " );
// 调用通过prototype原型对象定义的sayHello方法
p1.sayHello();

prototype是一个Javascript对象,可以为对象添加、删除,修改方法和属性。
从而为一个类添加成员定义。

了解了prototype对象,现在我们来看下new 的执行过程:
(1)当解释器遇到new操作符时便创建一个空对象,并将其中的this指针都指向这个新建的对象;
(2)将函数的prototype对象的所有成员都自动赋给这个新对象;
(3)开始运行Person这个函数,对这个对象进行初始化操作;
(4)返回(1)中所创建的对象.

上一节介绍的new执行过程相比,多了用prototype来初始化对象的过程,这也和prototype
的字面意思相符,它是所对应类的实例的原型。这个初始化过程发生在函数体(构造器)执行之
前,所以可以在函数体内部调用prototype中定义的属性和方法,例如:

function  Person(name) {
   
this.name=name;
   
this.sayHello();
}

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

// 创建该类一个实例,构造器中调用了其原型(prototype)中定义的sayHello方法
var  p1 = new  Person( " ceun " );

注意:原型对象的定义必须在创建类的实例之前,否则将不会起作用。
由此可见,prototype对象专用于设计类的成员,它是和一个类紧密相关的,除此之外,prototype
还有一个重要属性:constructor,表示对该构造函数的引用,如:

function  Person() {
  alert(
"Hello");
}
 
Person.prototype.constructor();
// 调用类的构造函数

上段代码运行后将会出现对话框,在上面显示"Hello",从而可以看出一个prototype是和一个类的定
义紧密相关的.实际上:Person.prototype.constructor===Person. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值