admin管理员组文章数量:1568418
2024年6月14日发(作者:)
JavaScript prototype 的深度探索
JavaScript 中对象的prototype 属性,可以返回对象类型原型的引用。这是一个相当
拗口的解释,要理解它,先要正确理解对象类型(Type)以及原型(prototype)的概念。
1、什么是prototype
JavaScript 中对象的prototype 属性,可以返回对象类型原型的引用。这是一个相当
拗口的解释,要理解它,先要正确理解对象类型(Type)以及原型(prototype)的概念。
前面我们说,对象的类(Class)和对象实例(Instance)之间是一种“创建”关系,
因此我们把“类”看作是对象特征的模型化,而对象看作是类特征的具体化,或者说,类
(Class)是对象的一个类型(Type)。例如,在前面的例子中,p1 和p2 的类型都是Point,
在JavaScript 中,通过instanceof 运算符可以验证这一点:
p1 instanceof Point
p2 instanceof Point
但是,Point 不是p1 和p2 的唯一类型,因为p1 和p2 都是对象,所以Obejct 也是它
们的类型,因为Object 是比Point 更加泛化的类,所以我们说,Obejct 和Point 之间有一
种衍生关系,在后面我们会知道,这种关系被叫做“继承”,它也是对象之间泛化关系的一
个特例,是面向对象中不可缺少的一种基本关系。
在面向对象领域里,实例与类型不是唯一的一对可描述的抽象关系,在JavaScript 中,
另外一种重要的抽象关系是类型(Type)与原型(prototype)。这种关系是一种更高层次的抽
象关系,它恰好和类型与实例的抽象关系构成了一个三层的链。
在现实生活中,我们常常说,某个东西是以另一个东西为原型创作的。这两个东西可以
是同一个类型,也可以是不同类型。习语“依葫芦画瓢”,这里的葫芦就是原型,而瓢就是
类型, 用JavaScript 的prototype 来表示就是“ 瓢.prototype = 某个葫芦” 或者
“瓢.prototype= new 葫芦()”。
要深入理解原型,可以研究关于它的一种设计模式——prototype pattern,这种模式
的核心是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
JavaScript 的prototype 就类似于这种方式。
关于prototype pattern 的详细内容可以参考《设计模式》(《Design Patterns》)它不
是本文讨论的范围。
版权声明:本文标题:JavaScript中prototype的解释 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1718317163a665982.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论