原型对象、原型、原型链

一、原型对象

js规定,每一个构造函数都有一个prototype属性,指向另一个对象,我们称之为原型对象。

原型对象与实例对象:

原型对象可以挂载函数,对象实例化不会多次创建原型对象里面的函数,节约内存;

实例对象可以直接访问原型对象中的函数,先找实例对象属性或函数,找不到会再找原型对象中的的属性和函数。

构造函数和原型对象中的this都指向实例化的对象。

箭头函数不能做构造函数,因为箭头函数里没有this。

constructor属性------每个原型对象里面多有个constructor属性(constructor构造函数),该属性指向该原型对象的构造函数。

二、原型

对象都会有一个属性__proto__指向构造函数的prototype原型对象。

\[prototype\]\] \<==\> __proto__ 尽量不要修改这个属性,否则会对性能产生非常严重的影响。 ### 三、原型链 __proto__属性的链状结构被称为原型链。 原型链的作用是为对象成员查找机制提供一个方向,或者说一条路线。 **原型链查找规则:** 1、当访问一个对象成员(属性/方法)时,首先查找这个对象自身有没有该成员(属性/方法) 2、如果没有就查找他的原型对象,也就是__proto__指向的prototype原型对象 3、如果还没有,就查找原型对象的原型对象,就是Object的原型对象 4、依次类推,知道找到Object为止(null) instanceof可以用来检测构造函数.prototype是否存在于实例对象的原型链上。 ### 四、原型继承 有些公共的属性和方法可以写到父级身上,自己通过继承也可以使用这些属性和方法。 **js大多是借助原型对象实现继承的特性。**

相关推荐
飞Link几秒前
告别盲目找Bug:深度解析 TSTD 异常检测中的预测模型(Python 实战版)
开发语言·python·算法·bug
1.14(java)8 分钟前
Spring-boot快速上手
java·开发语言·javaee
记忆多38 分钟前
c++名字空间 函数模版 左右值
开发语言·c++·算法
雨雨雨雨雨别下啦1 小时前
Vue案例——面经
前端·javascript·vue.js
2401_889884662 小时前
高性能计算通信库
开发语言·c++·算法
myNameGL2 小时前
ArkTs核心语法
前端·javascript·vue.js
浏览器API调用工程师_Taylor2 小时前
web逆向之小红书无水印图片提取工具
前端·javascript·逆向
yuki_uix2 小时前
性能指标与优化:从 Core Web Vitals 到实战
前端·javascript
简单不容易2 小时前
vue一次解决监听H5软键盘弹出和收起的兼容问题
javascript·vue.js
滕青山2 小时前
在线图片压缩工具核心JS实现
前端·javascript·vue.js