原型和原型链

一、术语介绍

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 小时前
C语言-嵌入式开发C语言常用预处理指令合集
c语言·开发语言
上海安当技术4 小时前
敏感数据怎么防拖库?信封加密(DEK+KEK 二层密钥)架构设计与 Java 实战
java·开发语言·python
我是唐青枫4 小时前
Java JCommander 实战详解:用注解解析命令行参数
java·开发语言
大鹏说大话4 小时前
C++ 内存布局详解:类、虚函数、虚表底层原理
java·开发语言
键盘会跳舞4 小时前
C++:容器适配器 queue 的源码级拆解
开发语言·c++·queue
Loge编程生活5 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程
在世修行6 小时前
从零打造 C# 工业视觉检测系统(八):Modbus RTU 协议解析与 PLC 剔除控制实战
开发语言·c#
sunburn-7 小时前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
AI直播技术杂谈7 小时前
AI直播推流链路中延迟优化的通用技术方案
开发语言·人工智能·php
vx-程序开发7 小时前
springboot农产品运输服务平台---附源码75498
java·javascript·spring boot·python·eclipse·django·php