Javascript之面向对象编程--类的实现(2)
来源:互联网 发布:淘宝网 for mac 编辑:程序博客网 时间:2024/06/07 04:03
/************************************
*Author:Java619
*Time:2007-01-25
*************************************/
Javascript之面向对象编程--类的实现(2)
这一节我介绍利用prototype对象为类添加成员的机制.
当new一个function时,prototype对象的所有成员将自动赋给所创建的对象,例如:
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中定义的属性和方法,例如:
this.name=name;
this.sayHello();
}
Person.prototype.sayHello=function()...{
alert("你好!"+this.name);
}
//创建该类一个实例,构造器中调用了其原型(prototype)中定义的sayHello方法
var p1=new Person("ceun");
注意:原型对象的定义必须在创建类的实例之前,否则将不会起作用。
由此可见,prototype对象专用于设计类的成员,它是和一个类紧密相关的,除此之外,prototype
还有一个重要属性:constructor,表示对该构造函数的引用,如:
alert("Hello");
}
Person.prototype.constructor();//调用类的构造函数
上段代码运行后将会出现对话框,在上面显示"Hello",从而可以看出一个prototype是和一个类的定
义紧密相关的.实际上:Person.prototype.constructor===Person.
- Javascript之面向对象编程--类的实现(2)
- Javascript之面向对象编程--类的实现(1)
- 【JavaScript】JavaScript中如何实现面向对象编程 之 类的实现
- javascript的征程之面向对象编程
- JavaScript面向对象编程之——类的概念
- Javascript面向对象编程之二:类的定义
- javascript面向对象编程实现
- JavaScript 面向对象编程实现
- JavaScript 之面向对象编程
- JavaScript面向对象编程之对象的属性
- JavaScript的类及面向对象编程
- JavaScript面向对象编程(2)-- 类的定义
- JavaScript面向对象编程(2)-- 类的定义
- [转]JavaScript面向对象编程(2)-- 类的定义
- JavaScript面向对象编程(2)-- 类的定义
- JavaScript面向对象编程(2)-- 类的定义
- javascript面向对象编程之创建对象
- JavaScript面向对象编程之创建对象
- 一个驱动木马的分析
- InfoQ-China发布在即,敬请关注支持
- Java Zip压缩
- 写给即将步入大学,主修计算机专业的青年们的一封信
- Sub Main做启动窗体
- Javascript之面向对象编程--类的实现(2)
- 使用mail函数发送邮件标题乱码问题
- J2EE的四个关键性问题
- Paper: Static Analyzer of Vicious Executables (SAVE)
- Possible Trojan.Gromozon analysis
- 让更多的人用上linux之---Ubuntu安装
- 现在笔记本电脑无线上网用CDMA还是GPRS好
- 在Google工作的技术巨头们!
- EditPlus 使用技巧集萃