原型和原型链
1|0原型链
1|1概述:
原型链是 JavaScript 实现继承的方式。
1|2原型:
如上段代码演示,
man
是由构造函数Person
所生成的实例。
实例man
的隐式原型__proto__
指向构造函数Person
的显式原型prototype
。
而原型prototype
的constructor
又指向本构造函数Person
。
由
Worker
生成的实例man
只有salary
属性存在。
当man
的__proto__
挂载到people
之后便能访问到name
属性。
原因在于:当 js 对象没有该属性时,会在其所在的原型链上寻找相应原型的属性,直到找到或到达顶层原型(Object
的prototype
为null
)。
1|3new 关键字
由于 JavaScript 通过原型链的实现方式,
new
关键字的作用不仅在于创建新的对象,同时也实现原型的继承。
new
关键字的作用就类似于上段代码中的createInstance
。
1|4class 、 extends 、 super
class
是ES6
新出现的语法,其创建实例的方式依旧是原型链。
如上演示,
class
中函数的this
均指向了实例本身。
class
中的函数挂载在prototype
上,而并不挂载在实例上。
若继承的父类class
存在constructor
,则子类class
必须调用super()
使实例上也有父类的属性。
1|5Function
Function
与Array
、Number
、Date
等同样是继承于Object
。
不同的是其余构建函数都返回一个实例,而Function
返回动态函数。
Function
的优点在于可以创建动态函数,但其性能比传统直接定义的方式开销大。
1|6instanceof 关键字
当构建函数在其原型链上即返回
true
。
instanceof
类似于如上代码中的isExtendsOf
。
__EOF__

本文链接:https://www.cnblogs.com/qingzhao/p/16499090.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具