Javascript之prototype
文献
<!--[if !supportLists]-->[1] <!--[endif]-->http://www.myowndb.com/blog/?p=26
当一个函数被设计来跟new一起使用的时候,称为构造器constructor。
因为javascript一方面想跟传统的对象创建方法接近,一方面又想有自己的特点,所以javascript使用构造器的方式比较奇怪。
当函数被创建的时候,会被赋给一个prototype成员,prototype是一个对象,该对象包含一个constructor成员,construtor成员指向该函数。并且这个prototype是用来扩展继承于它的对象的重要方法。就目前能看到的情况而言,除了constructor,prototype好像没有预定义什么属性,也许还存在其他的预定义属性。
可以将其他成员member加到该函数的prototype中。当函数被new调用创建一个新的对象的时候,这些成员都会被连接link into到这个新对象。
这样可以在没有事先扩展新对象的情况下,通过prototype来添加新的constants和methods。
假设与问题:
prototype是一个对象,或者准确地说应该是一个对象指针?
为什么prototype能实现继承机制?
当在当前对象寻找某个属性失败的时候,ECMAScript会在当前对象的prototype指向的对象中继续寻找该属性,以此类推。所以在当前对象调用作为其原型prototype的对象里的属性的时候是可以成功的,所以说当前对象继承了其原型对象的属性,亦即实现了继承机制。
关于创建新对象时发生的事情:
当创建一个新对象的时候,该对象的prototype将指向创建该对象的函数的prototype指向的对象。因此,考虑下面的代码:
function fConstructor()
{}
fConstructor.prototype.mMethod = function mMethod{};
function fNewConstructor()
{}
var oNew = new fConstructor{};
//change the point of prototype
fConstructor.prototype = new fNewConstructor{};
这时,虽然mMethod指向被改变了,但是因为对象oNew的创建在这个改变之前,所以oNew.prototype已经指向了改变之前的,从fConstructor中获取的prototype,并且将继续指向。所以,mMethod的改变对已经创建的对象没有影响,但是会影响下面创建的对象。也是基于oNew.prototype指向了fConstrutor中获取的prototype,如果在创建了对象oNew之后,再改变比如fConstructor.prototype.mMethod指向的函数的话,oNew的mMethod也会改变成新的mMethod。
分享到:
相关推荐
JavaScript_Prototype(源代码+中文手册)
轻松建立有高度互动的web2.0特性的富客户端页面
javascript的prototype继承
JavaScript中prototype的使用
高清版JavaScript_prototype_pollution_attack_in_NodeJS.pdf电子书,欢迎下载,或者您不想下载也可以去我的博客主页加群获取。
NULL 博文链接:https://miyulano.iteye.com/blog/1678239
prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。 prototype.js不仅是一个有很大实用价值的js库,而且有很高...
JavaScript使用prototype定义对象类型
javascript prototype文档
jQuery、Mootools、Prototype三大JavaScript框架中文手册
javascirpt框架高级编程 源代码,官方网站过来的
主要介绍了JavaScript使用prototype属性实现继承操作,结合实例形式详细分析了JavaScript使用prototype属性实现继承的相关原理、实现方法与操作注意事项,需要的朋友可以参考下
本文实例讲述了JavaScript通过prototype给对象定义属性的用法。分享给大家供大家参考。具体分析如下: 下面的JS代码定义了movie对象。在使用对象的过程中又通过prototype给对象添加了isComedy属性,调用的时候直接...
javascript Prototype 对象扩展.docx
NULL 博文链接:https://butterflymacro.iteye.com/blog/1271789
这是英文原版教程,对基于Prototype 和 Scripttaculous 的开发项目有益
Prototype javascript框架 js and ajax 的方便
javascript prototype原型操作笔记.docx