原型和原型链

原型

为解决构造函数声明对象时浪费内存的问题,可以使用原型对象实现实例方法共享

解决浪费内存问题的原理:

结论

因此,在构造函数时,将公共属性和方法写入prototype 原型对象

原型对象内,节约内存,实现实例化对象公共属性的共享

例如 扩展数组求和方法:

对象原型

实例对象都会有一个属性proto 指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有proto原型的存在

注意:

proto是JS非标准属性(只读不能赋值)

\[prototype ]和proto意义相同

用来表明当前实例对象指向哪个原型对象prototype

即:对象原型指向原型对象

原型链

只要是实例化对象就有proto 它指向该对象的原型对象

普通构造函数的原型对象也是一个对象 也有proto 指向Object构造函数的原型对象

Object构造函数的原型对象也有proto但是它指向null 空

例如:

总的来说:

原型链就是一种查找规则:

1.当访问一个对象的属性或者方法时,首先查找这个对象自身有没有该属性

2.如果没有就查找它的原型

3.如果还没有就查找原型对象的原型

4.以此类推直到查找到Object为止

5.proto对象原型的意义就在于为对象成员查找机制提供一个方向

例如:

map方法就在构造函数Array的原型对象上,声明的普通数组想要使用就需要一层层查找到Array的原型对象上

6.可以使用instanceof运算符用于检测构造函数的prototype属性(原型)是否出现在某个实例对象的原型链上

简单来说就是一个实例对象的原型链上是否可以找到某个构造函数的原型

即 实例对象是否在属于某构造函数

相关推荐
昵称画3 小时前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php
“AI国潮设计-小江”3 小时前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
沙蒿同学3 小时前
不引 Ghostscript:我用纯 Go 给 PDF 做了一场「压缩手术」
前端·后端·github
传奇开心果编程3 小时前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
Linux_cy3 小时前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
code tsunami4 小时前
【无标题】
开发语言·python
变与不变8064 小时前
jQuery细节以及使用应用场景
前端·javascript·jquery
CodeGL4 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer5 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
SailingCoder5 小时前
【封闭结束1】端到端交付:Agent 一次请求如何走完全链路
前端·安全·ai·面试·agent·harness