原型,原型链,原型的继承

article/2025/9/13 1:17:57

原型的作用?

1.节省内存空间

2.实现数据共享(继承)

什么是原型?

任何一个函数都有propotype属性,它本身是一个对象,我们称之为原型

构造函数,实例化对象与原型之间的关系?

1.任何一个函数都有prototype属性,它本身是一个对象,我们称之为原型

2.构造函数也是函数,也都有prototype属性,它本身是个对象,我们称之为原型

3.构造函数的原型对象上的属性和方法都可以被实例化对象所继承

4.任何一个对象都有constructor属性,实例化对象的constructor属性指向构造函数

5.原型也是对象,也有constructor属性,构造函数的原型对象的constructor属性指向构造函数

6.任何一个对象都有__proto__属性,实例化对象的__proto__属性指向构造函数的原型

在原型的函数中this的指向?

在原型的函数中,如果实例化对象调用该函数,this指向实例化对象,如果原型对象调用该函数,this指向原型对象

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>原型</title></head><body></body><script>// 结论一推理:function fn1() {}console.log(fn1)console.log(fn1.prototype)console.log(typeof fn1.prototype)console.log(fn1.prototype instanceof Object) //trueconsole.log(fn1.prototype instanceof Array)// 结论二推理:function Car(brand) {this.brand = brand// this.color = colorthis.run = function () {console.log(this.brand + '会行驶!')}}// 结论三的推理Car.prototype.color = '黑色'Car.prototype.playVideo = function () {console.log(this)console.log(this.brand + '可以放音乐')}Car.prototype.playVideo()console.log(Car.prototype)var car1 = new Car('路虎')console.log(car1)var car2 = new Car('法拉利')console.log(car2)var car3 = new Car('宾利')console.log(car3)console.log(car1.color)console.log(car2.color)console.log(car3.color)car1.playVideo()car2.playVideo()car3.playVideo()// 结论四:上午的推理// 结论五的推理console.log(Car.prototype.constructor)// 结论六:console.log(car1.__proto__)console.log(Car.prototype);console.log(Car.prototype.__proto__);console.log(Object.prototype);console.log(Object.prototype==Car.prototype.__proto__);console.log(Car.prototype.prototype==Object.prototype);console.log(Car.prototype==Function);
console.log(Car.constructor);
console.log(Car.prototype.__proto__==Object.prototype)console.log(window.history.__proto__)var obj = {}console.log(obj.__proto__)</script>
</html>

原型链

在javascript中每个对象都会有一个__proto__属性,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去__proto__里去找这个属性,这个__proto__又会有自己的__proto__,于是就这样一直找下去,这就是原型链的概念

原型链最终指向null

实例化对象的属性查找规则

先从原型链上查找,有就返回,如果没有就时undefined或者报错

将原型对象写成字面量形式会丢失constructor属性,如何解决?

既然是字面量形式,那么加上即可

原型的继承

原型继承是将父元素的实例对象当做子元素构造函数的原型对象。

 

    //  构造函数function student(name, age) {this.name = namethis.age = age}// 实例化对象let s1 = new student('张三', 18)// 子元素通过自己的原型对象的原型和父元素(object)的原型对象对比// 如果相等就代表他们指向的是同一个原型对象console.log(s1.__proto__.__proto__ === Object.prototype)//true// 子元素通过自己原型的原型去找自己的父元素console.log(s1.__proto__.__proto__.constructor)//object


http://chatgpt.dhexx.cn/article/xwCXj9Fk.shtml

相关文章

JS原型、原型链和7种继承方法【白话文讲解】

前言 在学习JS原型、原型链和继承之前&#xff0c;我们必须先弄懂三个W&#xff0c;也就是我们常说的“学习三问” 学习三问&#xff1a; 1.它是什么&#xff1f;&#xff08;What&#xff09; 2. 为什么用它&#xff1f;&#xff08;Why&#xff09; 3. 什么时候用它&#xff…

原型链与常用继承方法

原型链:当访问一个对象的属性时&#xff0c;如果该对象内部不存在这个属性&#xff0c;就会去该对象的__proto__ 上&#xff08;也就是它构造函数的prototype&#xff09;查找 。该构造函数的prototype上也有一个自己的__proto__ 属性&#xff0c;然后继续向上查找&#xff0c;…

如何用原型链的方式实现一个 JS 继承?

大家好&#xff0c;我是前端西瓜哥。今天讲一道经典的原型链面试题。 原型链是什么&#xff1f; JavaScript 中&#xff0c;每当创建一个对象&#xff0c;都会给这个对象提供一个内置对象 [[Prototype]] 。这个对象就是原型对象&#xff0c;[[Prototype]] 的层层嵌套就形成了…

JS学习笔记 原型链和利用原型实现继承

原型链 原型链是一种关系&#xff0c;实例对象和原型对象之间的关系&#xff0c;关系是通过原型(__proto__)来联系的 实例对象中有__proto__,是对象,叫原型,不是标准的属性,浏览器使用,并且有的游览器不支持构造函数中有prototype属性,也是对象,叫原型 注意 原型中的方法是可…

Arduino基本知识(marlin固件配置)

初识arduino&#xff0c;根据mega2560&#xff08;某宝可以买到&#xff09;官网的100个管脚具体控制一句传输进行操作。 https://www.arduino.cc/en/Hacking/PinMapping2560 其管脚图如上所示。 首先在官网下载arduino的配套软件 https://www.arduino.cc/ 对于编程&#xf…

3D打印机硬件驱动-马林固件最新版本2.0.X中文注释(3)marlin 2.0.9.2 截至发稿时间2021年12月16日

/** * Marlin 3D Printer Firmware 头描述详见其他两个文件头描述 * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm * * This program is…

Marlin固件配置

文档来源自http://www.geek-workshop.com/thread-33314-1-1.html 1、基本配置基本配置是可选的,主要是给你的固件起个名字,如果你的配置很牛,让大家知道你是谁。据说这个在启动的时候会显示在显示屏中,应为我没有显示屏,所以无法验证。这个修改也很简单,通过搜索找到“S…

MKS MONSTER8 V1.0使用说明书(基于Marlin 2.0.X固件配置Voron 2.4)

广州谦辉信息科技有限公司 (基于Marlin 2.0.x 固件配置 Voron 2.4) 创客基地QQ群&#xff1a;489095605 232237692 邮箱&#xff1a;Huangkaidamakerbase.com.cn 主板购买链接&#xff1a;https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-23356668283.43.7eec55caLT…

ESP32烧录Marlin固件

安装platformIO 这点很简单&#xff0c;保证你拥有一个能够成功连接外网的环境即可。内网可能不太稳定有可能安装失败。 克隆代码 我这里采用的是fyset_e4的代码&#xff0c;这个代码开源在了https://github.com/FYSETC/FYSETC-E4,作者已经针对marlin固件做了一些配置。 更改…

i3型3D打印机制作详解——Marlin固件中文介绍

关注微信公众号&#xff1a;嵌入式基地 后台回复&#xff1a;3d打印机 获取资料 硬件框架搭建介绍 https://blog.csdn.net/qq_39020934/article/details/80380250 Marlin固件中文介绍 https://download.csdn.net/download/qq_39020934/10401251 …

3D打印机Marlin固件双Z轴设置

3D打印机Marlin固件双Z轴设置 在3D打印机Marlin固件的最新版本2.1.1中&#xff0c;设置双Z轴和老版本有一些改动。记录一下如何在最新版本的Marlin固件中设置双Z轴。 以MKS GEN_L V2.1的主板为例&#xff0c;硬件连接还是和原来一样&#xff0c;第二个Z轴的电动机连接到空闲的…

Marlin 固件配置手动退换料

换料的步骤首先把喷头加热&#xff0c;软化喷嘴里残余的线材&#xff0c;然后反转挤出机&#xff0c;把线材抽出来。最后装入新线材&#xff0c;并挤出余留在喷头里的材料。整个过程用一个命令 M600 就能完成。默认情况下 Marlin 固件并没有开启这个功能&#xff0c;但是可以修…

MKS_SGEN_L V1.0 marlin 固件编译

1.下载 Visual Studio Code 打开Visual Studio Code 安装插件 在应用商店搜索下载安装如下图&#xff1a; 安装完这些还是不行的 还要另外安装python 3.8.8 其他版本python 不行右下角会报错&#xff0c;提示安装python 3.8 python 3.8.8 百度网盘下载链接:https://pan.bai…

3D打印机硬件驱动-马林固件最新版本2.0.X中文注释(1)marlin 2.0.9.2 截至发稿时间2021年12月16日

马林固件最新版本翻译注释 /* Marlin Firmware 马林固件 (c) 2011-2020 MarlinFirmware Portions of Marlin are (c) by their respective authors. 马林部分程序来源于世界各地的开发者 All code complies with GPLv2 and/or GPLv3 所有源码依靠GPLv2 和 GPLv3架构编写…

Marlin固件学习总结(一)

接触过3D打印也有一段时间了&#xff0c;一直没有将学到的知识以文本的形式记录下来。现在也没有太多时间继续玩这个了&#xff0c;因此想慢慢把之前所接触到所学到的知识通过文本的形式记录一下&#xff0c;也分享给那些感兴趣的人。 既然是开篇我们先了解一下marlin固件的结构…

Marlin固件之二:源代码详解与移植

由于需要进行固件定制化&#xff0c;Marlin固件太过于强大和紧凑&#xff0c;我对这个固件进行了裁剪&#xff0c;只剩下主枝干&#xff0c;实现功能的定制和裁剪。以下的代码详解是基于我已经移植在stm32上面的一个程序进行的。

Marlin固件之—:基础入门与测试

一、Marlin的简单介绍 Marlin固件是一个3D打印的开源固件&#xff0c;3D打印固件有许多&#xff0c;Marlin最为健全和强大&#xff0c;当然相对也会复杂一些。使用Gcode控制爱&#xff0c;Gcode是数控机床等工控控制使用范围较广的一种指令协议。在这里介绍一些Marlin的入门经…

Marlin固件介绍

目录 什么是Marlin&#xff1f; 主要特点 Marlin如何工作 打印东西 建模 …

marlin2.0.x 固件相关配置文档说明

主要目的 了解对应参数的作用&#xff0c;以优化3D打印机的打印效果 具体分析 配置文件有两个 Configuration.h 包含硬件核心、语言和控制器的设置&#xff0c;以及最常见的功能和组件的设置&#xff0c;主要配置的地方。 Configuration_adv.h 提供更详细的自定义选项&…

杨辉三角形--2021蓝桥杯Java组

杨辉三角形–2021蓝桥杯Java组 题目描述 下面的图形是著名的杨辉三角形&#xff1a; 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如下数列&#xff1a;1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,⋯ 给定一个正整数 N&#xff0c;请你输出数列中第一次出现…