原型和原型链

一、术语介绍

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中的继承

参考数据:

相关推荐
2601_966949655 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
晨曦中的暮雨7 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
喵了几个咪8 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
程序员清风8 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
小大宇9 小时前
Vue知识点6-computed计算属性
前端·javascript·vue.js
程序员海军9 小时前
尤雨溪 : Vue 4 已经在规划中了!
前端·javascript·vue.js
2601_949970699 小时前
HumanizeDuration 跨端三方库仓颉适配全流程
前端·javascript·flutter
2601_9628857210 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
Wang's Blog10 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
下一站春风里11 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法