`

关于prototype

阅读更多
犀牛书9.2写道:
After creating the empty object, new sets the prototype of that object. The prototype of an object is the value of the prototype property of its constructor function. All functions have a prototype property that is automatically created and initialized when the function is defined. The initial value of the prototype property is an object with a single property. This property is named constructor and refers back to the constructor function with which the prototype is associated. This is why every object has a constructor property. Any properties you add to this prototype object will appear to be properties of objects initialized by the constructor.

每个function都有一个prototype属性。当和new操作符一起使用时,function就成为了构造函数,其prototype的所有属性都会自动复制到新创建的对象上,而且可以直接访问。比如:
Car.prototype.color = "red";
var car1 = new Car();
var car2 = new Car();

这样的话,car1和car2都会有一个color属性,而且值默认都是"red"。也由于这个原因,prototype通常用于定义公用的方法,而不是属性。

prototype对象至少都会有一个constructor属性,这个属性是反向关联到构造函数本身。(结合第1条,每个对象都可以直接访问这个constructor属性)

-------------------------------------分隔线------------------------------------

an object inherits properties even if they are added to its prototype after the object is created. This means that it is possible (though not necessarily a good idea) to add new methods to existing classes.

-------------------------------------分隔线------------------------------------

此外,以下代码说明了从prototype继承得到的属性与自有属性的区别
var r = new Rectangle(2, 3);
r.hasOwnProperty("width");   // true: width is a direct property of r
r.hasOwnProperty("area");    // false: area is an inherited property of r
"area" in r;                 // true: "area" is a property of r

对象本身并没有prototype属性,是对象的构造函数才有,只是prototype的所有属性,都会被复制到对象上,从而可以直接访问而已,有点类似于Struts2中的值栈。

-------------------------------------分隔线------------------------------------

要注意,由于prototype自身也是一个对象,所以它也有一个构造函数。没有进行特殊处理的话,它的构造函数是Object()。
分享到:
评论

相关推荐

    Prototype_1.4.doc,Prototype_1.5.1.chm 中文版

    "Prototype_1.4.doc"可能是一个关于Prototype 1.4版本的文档,以.doc格式存储,可能包含了详细的API说明、示例代码和使用指南。而"Prototype_1.5.1.chm"是一个帮助文件(Compiled Help Manual),通常用于存放软件的...

    prototype1.6.0prototype1.6.0prototype1.6.0prototype1.6.0

    综上所述,这个压缩包提供了一个关于Prototype 1.6.0的实例,包括一个HTML页面和相关资源,帮助开发者了解和学习如何在实际场景中使用这个JavaScript框架的特定版本。通过查看和分析这些内容,可以深入理解Prototype...

    Prototype-1.pdf

    - **在线教程**:网络上有很多关于Prototype的免费教程,适合初学者快速入门。 - **社区论坛**:参与Prototype社区的讨论,可以解决具体的技术问题。 - **培训课程**:Marty Hall提供的定制化Java EE培训课程,涵盖...

    PROTOTYPE 官方+个人整理的帮助文档

    这个标题表明我们即将探讨的是关于Prototype的官方文档,这是一份集合了官方资源和个人理解整理而成的综合指南。Prototype是一个JavaScript库,它为JavaScript编程提供了许多实用的功能,包括对象扩展、类创建、DOM...

    《prototype1.4完全攻略》

    以下是一些关于Prototype 1.4的关键知识点: 1. **对象扩展与原型链**:Prototype利用JavaScript的原型机制,使得可以方便地为原生对象添加方法和属性,如Array、String等。这使得开发者能更高效地处理数据和对象。...

    Prototype&Prototype中文手册

    首先,`Prototype1.5中文手册.chm`是一个帮助文档,提供了关于Prototype 1.5版本的详细指南。这个手册通常会涵盖以下内容: 1. **介绍**:解释Prototype的基本概念和目标,以及它如何简化JavaScript编程,特别是...

    prototype-1.4.0.rar及开发手册

    "1_4版开发prototype_js 1_4版开发者手册.doc" 这份文档可能包含了关于Prototype.js 1.4.0版本的详细开发指南,包括API参考、示例代码和最佳实践。通过阅读这份文档,开发者可以更好地理解如何利用Prototype.js的...

    Prototype开发和使用

    本压缩包中的"Prototype"很可能包含了关于Prototype模式的示例代码(demo)和使用说明文档。通过阅读和理解这些内容,开发者可以更好地理解和应用Prototype模式到自己的项目中,提升代码的可维护性和性能。 综上所...

    Javascript中 关于prototype属性实现继承的原理图

    接下来,我们将深入探讨如何通过`prototype`属性来实现继承,并解释所给定的“JavaScript中关于prototype属性实现继承的原理图”。 ### 了解JavaScript中的原型链 在JavaScript中,每个函数都有一个`prototype`...

    Prototype.js 1.6.0.3 及中文CHM帮助文档

    在这个文档中,你可以找到关于Prototype.js所有特性和方法的详细解释,包括如何使用、示例代码和注意事项,这对于初学者和经验丰富的开发者来说都是宝贵的参考资料。 使用Prototype.js可以提升JavaScript开发效率,...

    prototype1.6.0中文chm文档

    标题"prototype1.6.0中文chm文档"表明这是一个关于Prototype JavaScript库的中文版1.6.0版本的文档,格式为CHM(Microsoft的 Compiled HTML Help),通常用于存放帮助文档或者API参考。 描述中提到"哥爱的就是免费...

    ProtoType-Demo.rar

    标题中的"ProtoType-Demo.rar"表明这是一个关于ProtoType库的演示示例,保存在RAR压缩文件中。ProtoType是一个JavaScript库,它扩展了JavaScript的基本对象,并提供了强大的DOM操作、事件处理以及 AJAX 功能,使得...

    Prototype150

    标题"Prototype150"表明这是一个关于Prototype库的特定版本——v1.50。在这个版本中,开发者可能引入了新的功能、修复了已知的bug或者优化了性能。了解这个版本的特点和改进对于那些依赖Prototype库的项目来说至关...

    Prototype 1.5 中文手册.rar

    这个"Prototype 1.5 中文手册.rar"压缩包包含了关于Prototype 1.5版本的中文文档,对于学习和使用该库的人来说,是一份非常有价值的参考资料。 1. Prototype基础概念: Prototype库的核心理念是通过扩展JavaScript...

    Prototype1.6中文版文档chm

    标题"Prototype1.6中文版文档chm"表明这是一个关于Prototype JavaScript库的1.6版本的中文文档,以CHM(Microsoft Compiled HTML Help)格式提供。CHM文件是一种常见的帮助文档格式,它将HTML页面、图像和其他资源...

    AJAX之Prototype入门学习.docx

    虽然缺乏官方完整文档,但网络上有许多关于 Prototype 使用和源码解读的文章,可以帮助开发者克服这一挑战。 总的来说,Prototype 是一个强大的 JavaScript 库,通过提供丰富的工具和接口,极大地简化了 AJAX 应用...

    Prototype文档

    在这个"Prototype-v1.6.0.chm"文件中,用户可以找到关于Prototype 1.6.0的所有详细信息,包括API参考、教程和示例。 ### Prototype的核心特性: 1. **类与继承**:Prototype通过模拟类和继承的概念,使得...

    prototype.js.cn.doc.rar

    Stack Overflow、GitHub和网上论坛都有很多关于Prototype.js的问题解答和讨论,是提升技能的好去处。 总结,Prototype.js作为一个强大的JavaScript库,它通过丰富的API和面向对象的设计模式,为JavaScript开发带来...

    prototype开发手册,AJAX学习必备

    在"prototypejs0113.htm"和"Onion的天空 » prototype中的ajax对象应用实例.htm"这样的文档中,你可能找到更多关于Prototype库和其Ajax功能的实例和解释。"Onion的天空 » prototype中的ajax对象应用实例.files"可能...

Global site tag (gtag.js) - Google Analytics