原型和原型链

一、术语介绍

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

参考数据:

  • 1\] \[你不知道的JavaScript

  • 2\] \[JavaScript高级程序设计

  • 3\] \[[mdn](https://developer.mozilla.org/)\](https://developer.mozilla.org/)

相关推荐
kylezhao2019几秒前
C#中 Invoke、begininvoke、InvokeRequired的详细讲解和三者之间的区别
开发语言·c#
bubiyoushang8882 分钟前
基于遗传算法的LQR控制器最优设计算法
开发语言·算法·matlab
2301_796512526 分钟前
【精通篇】打造React Native鸿蒙跨平台开发高级复合组件库开发系列:Pagination 分页(绑定当前页码)
javascript·react native·react.js·ecmascript·harmonyos
谢尔登7 分钟前
深入React19任务调度器Scheduler
开发语言·前端·javascript
hoiii1877 分钟前
MATLAB中LSSVM工具包及简单例程详解
开发语言·matlab
mingren_131410 分钟前
SDL3配置及基本使用(完整demo)
开发语言·c++·音视频
李可以量化10 分钟前
【Python 量化入门】AKshare 保姆级使用教程:零成本获取股票 / 基金 / 期货全市场金融数据
开发语言·python·金融·qmt·miniqmt·量化 qmt ptrade
阿珊和她的猫11 分钟前
深入解析如何监听浏览器的页面关闭事件
前端·javascript·vue.js
众创岛11 分钟前
使用IIS运行php程序,处理put和delete请求出现405错误
开发语言·php
敲代码的柯基11 分钟前
一篇文章理解tsconfig.json和vue.config.js
javascript·vue.js·json