原型对象:
每个对象都有一个参考对象,这个参考对象称之为原型对象。原型对象有自己的属性和方法。当A是B的原型对象时,那 么B拥有A中的所有属性和方法。
原型对象的工作原理:
使用原型对象定义一个新的对象时,该对象不会立即拥有原型对象的属性和方法,在调用的时候本对象内部没有的属性和方法是才回去调用原型中的属性和方法。(动态分配).
原型对象的引用:
在javascript中每一个函数都定义了一个prototype属性用于引用原型对象。
function computer(){
this.name="thinkPad 500";
this.factory="联想";
this.price=5000;
this.size=17;
}
/*
*读取函数中的prototype,默认情况下为空
*/
for( pro in computer.prototype){
document.write(computer.prototype,"<br>");
}
//没有继承原型对象中属性
var mycomputer=new computer();
for( pro in mycomputer){
document.write(pro,":",mycomputer[pro],"<br>");
}
computer.prototype.interface="VAG";
//添加原型对象的属性
for( pro in computer.prototype){
document.write(pro,":",computer.prototype[pro],"<br>");
}
//继承原型对象中属性
var mycomputer=new computer();
for( pro in mycomputer){
document.write(pro,":",mycomputer[pro],"<br>");
}
原型对象的继承
继承是通过原型对象实现
<script type="text/javascript">
//定义一个工人
function worker(){
this.name="";
this.address="";
}
//定义一个部门经理
function manager(_dept){
this.dept=_dept;
}
//定义继承关系
manager.prototype=new worker();
//创建计划部门经理
var jh=new manager("计划");
for(pro in jh){
document.write(pro,":",jh[pro],"<br>");
}
//当前jh有效没有改变原型对象中的值
jh.name="计划部门经理";
jh.address="计划部";
for(pro in jh){
document.write(pro,":",jh[pro],"<br>");
}
//原型对象中的值没有被修改
var rs=new manager('人事');
for(pro in rs){
document.write(pro,":",rs[pro],"<br>");
}
//修改原型对象中的值,将会在继承的对象中体现,如果继承类中没有覆盖
manager.prototype.address="成都市";
//覆盖后address的值还是原来的计划
for(pro in jh){
document.write(pro,":",jh[pro],"<br>");
}
//没有覆盖address的值是成都市
for(pro in rs){
document.write(pro,":",rs[pro],"<br>");
}
</script>
通过原型对象可以为所有继承对象添加属性和删除属性,所有继承对象都将统一显示。
分享到:
相关推荐
原型法和面向对象的分析与设计方法 原型法是20世纪80年代中期为了快速开发系统而推出的开发模式,旨在改进传统的结构化生命周期法的不足,缩短开发周期,减少开发风险。原型法的理念是:在获取一组基本需求之后,...
4. **数据建模**:通过原型,可以初步确定类、接口和对象的结构,为后续的面向对象设计打下基础。 在面向对象设计(OOD)阶段,原型法的作用同样显著: 1. **类和对象设计**:原型可以帮助确定哪些实体应该抽象为...
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作这些数据的方法封装在一起。在Python中,面向对象编程是其核心特性之一,使得Python成为了一种非常适合...
总的来说,JavaScript中的面向对象编程与传统的基于类的OOP有所不同,它通过原型链和构造函数来实现对象的创建和继承。正确理解并运用这些概念,可以让开发者更有效地利用JavaScript进行面向对象的编程。
以下是对JavaScript面向对象和原型机制的详细解释: 1. 面向对象的基本概念: - 类:在许多面向对象语言中,类是创建对象的模板,但在JavaScript中没有类的概念。 - 对象:JavaScript中的对象是一组键值对,可以...
面向对象编程在JavaScript中的实现主要基于以下三个概念:构造函数、原型和实例化。构造函数是一个特殊类型的函数,用于创建和初始化一个新对象。当你定义一个构造函数时,实际上是在定义一个对象类型。例如: ```...
本文旨在对JavaScript实现基于原型对象的“继承”进行深入分析,并与基于类的继承进行比较。通过对JavaScript的原型继承机制的介绍和实例分析,提出一个改进的“寄生组合模式”,使读者能够更好地理解和应用...
4. **类(Class)**:ES6引入了类语法糖,使得JavaScript的面向对象更加符合传统面向对象语言的写法,但实际上,这些“类”仍然基于原型实现。 ```javascript class Person { constructor(name) { this.name = ...
面向对象编程是一种基于对象和类的编程范式,它强调数据和操作数据的方法的封装。在JavaScript中,面向对象主要通过构造函数、原型链、原型对象和闭包等机制来实现。 1. **构造函数**:构造函数在JavaScript中扮演...
面向对象软件工程是软件开发领域的一个重要概念,它基于面向对象的思想来构建和管理软件项目。这一领域由美国计算机科学家Stephen R. Schach所著的《面向对象软件工程》第八版进行了深入阐述。Schach博士在软件工程...
- 基于类的OOP(ES6以后):ES6引入了`class`关键字,但实质上仍然是基于原型的,提供了一种更接近传统面向对象语言的语法糖。 从描述中我们得知这是一个可以直接运行的Java项目,这可能意味着它包含了完整的源...
JavaScript的面向对象主要基于三个核心概念:封装、继承和多态。封装是将数据和操作这些数据的方法结合在一起,形成一个独立的单元,即对象。在JavaScript中,对象是键值对的集合,可以使用对象字面量或构造函数创建...
此外,面向对象设计更容易适应需求变化,因为对象和它们之间的关系可以很自然地映射到问题域中。 文档提及的“.net”,是指.NET框架,它是一个由微软开发的软件框架,支持多种编程语言,允许开发者使用面向对象方法...
面向对象的程序设计是一种编程范式,它基于“对象”的概念,强调数据和操作数据的方法紧密结合。在这个实验中,我们探讨了如何利用类和对象来实现面向对象编程的基本原理。 首先,我们需要理解类(Class)是面向...
尽管本质上仍然是基于原型的,但类的语法简化了对象的创建和继承。 7. **继承** JavaScript有多种继承方式,如原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承等。ES6的`class`引入...
面向对象编程(Object-Oriented Programming,OOP)是编程的一种范式,它基于“对象”概念,将数据和处理数据的方法封装在一起。在JavaScript中,我们可以通过构造函数、原型和实例来实现面向对象编程。 首先,让...
但本质上,ES6的类仍然是基于原型的。 8. **继承** JavaScript中的继承主要通过原型链实现,可以使用`prototype`或`class`关键字实现。此外,还可以使用`Object.assign`进行浅复制实现混入式继承。 9. **多态** ...
"基于JavaScript的面向对象可维护代码编写" 本文主要探讨如何编写可维护的面向对象JavaScript代码。面向对象编程是一种编程范式,它通过定义类和对象来描述现实世界中的实体。在JavaScript中,类是通过函数来定义的...
尽管JavaScript没有传统意义上的类继承(如Java),但它支持基于原型的继承。通过`__proto__`链或`Object.setPrototypeOf()`方法,子类可以访问和重写父类的方法。 **示例代码:** ```javascript function Animal...