原型和原型链

一、术语介绍

1. 原型:

  • 对于对象,都有一个隐藏属性 "\[Prototype]",可以通过 "proto" 来访问。可以叫做对象的原型

2. 原型链

  • 对象的原型属性指向另一个对象。层层向上访问组成了原型链

二、原型的作用

  1. 实现属性在对象间的重用
jsx 复制代码
const person = { prop2: 'personal prop' };
const son = {
	prop: 'kid prop',
	__proto__: person,
};

console.log(son.prop2) // personal prop

三、原型和构造函数的关系

  1. js中每声明一个函数,该函数都有一个prototype属性。
jsx 复制代码
function x() {};
console.log(x.prototype);
/*
默认情况下 x.prototype等于
{
  constructor: f x()
  [[Prototype]]: Object
}
*/
  1. 当new一个函数的时候,会发生什么
    1. 创建一个全新的对象
    2. 将对象内部的 \[Prototype]指向该函数的prototype属性
    3. 新对象绑定到函数调用的this
    4. 判断函数返回值,如果是对象,这返回该对象,否则返回this。(注意:如果返回的是自定义的对象,则该对象的 \[prototype] 指向object )

总结:没有自定义构造函数返回对象的情况下,构造函数返回的对象 \[Prototype]属性指向函数的prototype。

四、关于继承

js中,可以通过原型链来实现function原型属性的继承。

js中的继承

参考数据:

相关推荐
半个落月3 小时前
LangChain Agent 中间件实战(上):生命周期、状态、短路与工具包
javascript·langchain
半个落月3 小时前
LangChain Agent 中间件实战(下):DeepAgents文件权限、长期记忆与对话摘要
javascript·langchain
程序猿追4 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓4 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播4 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
墨云安全4 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
u0111026755 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
摇滚侠5 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y5 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
hhb_6186 小时前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts