原型和原型链

原型

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

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

结论

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

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

例如 扩展数组求和方法:

对象原型

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

注意:

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

\[prototype \]\]和**proto**意义相同 用来表明当前实例对象指向哪个原型对象prototype 即:对象原型指向原型对象 ### 原型链 只要是实例化对象就有**proto** 它指向该对象的原型对象 普通构造函数的原型对象也是一个对象 也有**proto** 指向Object构造函数的原型对象 Object构造函数的原型对象也有**proto**但是它指向null 空 例如: ![](https://i-blog.csdnimg.cn/direct/e00a1e18bdfc4ef9a3d6f47e7cd76965.png) 总的来说: 原型链就是一种**查找规则:** 1.当访问一个对象的属性或者方法时,首先查找这个对象自身有没有该属性 2.如果没有就查找它的原型 3.如果还没有就查找原型对象的原型 4.以此类推直到查找到Object为止 5.**proto**对象原型的意义就在于为对象成员查找机制提供一个方向 例如: map方法就在构造函数Array的原型对象上,声明的普通数组想要使用就需要一层层查找到Array的原型对象上 6.可以使用instanceof运算符用于检测构造函数的prototype属性(原型)是否出现在某个实例对象的原型链上 #### 简单来说就是一个实例对象的原型链上是否可以找到某个构造函数的原型 即 实例对象是否在属于某构造函数

相关推荐
weixin_440401697 分钟前
Python数据分析(空值、重复值检测删除与设置)
开发语言·python·数据分析
消失的旧时光-194312 分钟前
C++ 多线程与并发系统取向(五)—— std::atomic:原子操作与状态一致性(类比 Java Atomic)
开发语言·jvm·c++·并发
资深web全栈开发17 分钟前
CoI - 组合优于继承:解耦的艺术
android·java·开发语言
低频电磁之道18 分钟前
C++中预定义宏
开发语言·c++
工程师00723 分钟前
MQTT 概念详解与 C# 实战
开发语言·c#·mqtt通信
菜鸟小芯39 分钟前
【GLM-5 陪练式前端新手入门】第五篇:响应式适配 —— 让个人主页 “见机行事”
前端·人工智能
代码改善世界1 小时前
栈和队列的实现与详解(C语言版):从底层原理到代码实战
c语言·开发语言
无名之逆1 小时前
你可能不需要WebSocket-服务器发送事件的简单力量
java·开发语言·前端·后端·计算机·rust·编程
Remember_9931 小时前
一文吃透Java WebSocket:原理、实现与核心特性解析
java·开发语言·网络·websocket·网络协议·http·p2p
加农炮手Jinx1 小时前
Flutter for OpenHarmony:web_socket_channel 全平台 WebSocket 通信标准库,从原理到鸿蒙实战(3000字深度解析)
android·前端·网络·websocket·flutter·华为·harmonyos