当前位置: 首页 > news >正文

010-原型链

原型链

  • 1、概念
  • 2、原理
  • 3、new 操作符原理
  • 4、应用

1、概念

原型链:javascript的继承机制,是指获取JavaScript对象的属性会顺着其_proto_的指向寻找,直至找到Object.prototype上。

2、原理

💡 Tips:构造函数 Fn, p 为 new Fn 的实例对象,p 有一个属性 proto 指向了 Fn.prototype,形成原型链。

function Fn(name) {this.name = name;
}
Fn.prototype.run = function () {console.log('run run run ' + this.name);
};let obj2 = new Fn('tom');
obj2.run();
console.log(obj2.__proto__ === Fn.prototype); // true
console.log(Fn.prototype.constructor === Fn); // true
console.log(obj2.constructor === Fn); // true

原型链示意图:
在这里插入图片描述

3、new 操作符原理

function Fn(name, age) {this.name = namethis.age = age
}
Fn.prototype.sayName = function () {return this.name
}
var obj = myNew(Fn, "zcf", 18)
obj.sayName() // "zcf"function myNew() {//第一步新建一个对象var obj = {}// 第二步,拿到构造函数var constructor = [].shift.call(arguments)// 将obj的原型指向构造函数的原型,这样obj就可以访问构造函数原型中的属性了obj.__proto__ = constructor.prototype// 使用apply改变构造函数this指向obj,这样obj就可以访问构造函数原型中的属性了var ret = constructor.apply(obj, arguments)// 要返回objreturn typeof ret === "object" ? ret : obj
}

4、应用

将属性挂载到实例对象上,将公共方法挂载到构造函数的原型上,减少每次 new 时,都需要创建方法,多消耗堆内存。

相关文章:

010-原型链

原型链 1、概念2、原理3、new 操作符原理4、应用 1、概念 原型链:javascript的继承机制,是指获取JavaScript对象的属性会顺着其_proto_的指向寻找,直至找到Object.prototype上。 2、原理 💡 Tips:构造函数 Fn&#…...

Electron-builder打包安装包——编译篇

突然有一天想打包个桌面程序,没有打包过,经过九牛二虎之力终于打包出来,在此感谢那些热于分享的前辈! 本篇只讲打包运行和出现的问题 一、准备工作:提前下载相关资源包,否则在国内环境下可能因为网络问题…...

Red Hat系统升级内核版本

查看当前内核版本 uneme -r yum list kernel升级内核 yum update -y kernel检查升级后的内核版本 uneme -r yum list kernel升级系统中已安装的软件包到最新版本(过程时间较长) 目前只升级了系统内核,系统相关的安装包还是老的&#xff0…...

Java集合set之HashSet、LinkedHashSet、TreeSet的区别?

Java的集合中主要由List,Set,Queue,Map构成,Set特点:存取无序,不可以存放重复的元素,不可以用下标对元素进行操作。 HashSet 作为Set容器的代表子类,HashSet经常被用到&#xff0c…...

全方位碾压chatGPT4的全球最强模型Claude 3发布!速通指南在此!保姆级教学拿脚都能学会!

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…...

upload-Labs靶场“11-15”关通关教程

君衍. 一、第十一关 %00截断GET上传1、源码分析2、%00截断GET上传 二、第十二关 %00截断POST上传1、源码分析2、%00截断POST上传 三、第十三关 文件头检测绕过1、源码分析2、文件头检测绕过 四、第十四关 图片检测绕过上传1、源码分析2、图片马绕过上传 五、第十五关 图片检测绕…...

linux-rpm命令

rpm命令管理程序包:安装、升级、卸载、查询和校验 1、忽略依赖关系安装/卸载包 安装:rpm -Uvh 软件包名 --nodeps 卸载:rpm -e 软件包名 --nodes!!!!慎用!!&#xff01…...

如何利用python实现自己的modbus-tcp库

如果你想使用纯Socket编程来实现Modbus TCP通讯,而不是依赖于Modbus库,你需要理解Modbus TCP协议的细节,并能够手动构建和解析Modbus消息。以下是一个简单的示例,展示了如何使用Python的socket库来实现Modbus TCP通讯: 了解Modbus TCP协议: Modbus TCP协议使用TCP作为底层…...

linux系统-----------搭建LNMP 架构

PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可…...

C++中boost库的安装及使用(Windows)

Boost库的安装及使用 引言使用现有的boost库安装及使用引言 C++开发中经常会用到boost库,本文记录一下Windows上boost在visual studio2019上的使用。 Boost库是一个跨平台的C++库集合,旨在为C++开发者提供一系列高质量的通用功能。不同的Visual Studio(VS)版本并不要求安…...

CPP编程-CPP11中的内存管理策略模型与名称空间管理探幽(时隔一年,再谈C++抽象内存模型)

CPP编程-CPP11中的内存管理策略模型与名称空间管理探幽 CPP的四大内存分区模型 在 C 中,**内存分区是一种模型,用于描述程序运行时内存的逻辑组织方式,但在底层操作系统中,并不存在严格意义上的内存分区。**操作系统通常将内存分…...

springboot项目整合minio实现文件的分布式存储

minio是一款分布式存储系统&#xff0c;上一篇详细介绍了minio在windows环境下的搭建集群并通过nginx实现负载均衡&#xff0c;这里简单介绍下springboot项目整合minio并实现文件的上传下载删除等操作。 一、依赖的引入 1.1、maven项目 <dependency><groupId>io…...

微信小程序开发学习笔记《19》uni-app框架-配置小程序分包与轮播图跳转

微信小程序开发学习笔记《19》uni-app框架-配置小程序分包与轮播图跳转 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、配置小程序分包 分包可以减少小程序首次启动时的加载时间 为此&#…...

Python内置模块

目录 什么是模块 模块分类 通过模块创建者分类 系统内置模块 第三方模块 在线安装 离线安装 模块导入 math和random模块介绍 math模块 random模块 什么是模块 在我们编写程序时&#xff0c;需要导入包。例如随机数的产生&#xff0c;需要import random。import XXX&…...

WordPress建站入门教程:小皮面板phpstudy如何安装PHP和切换php版本?

小皮面板phpstudy支持的PHP版本有很多&#xff0c;包括5.2.17、5.3.29、5.4.45、5.5.9、5.6.9、7.0.9、7.1.9、7.2.9、7.3.4、7.3.9、7.4.3、8.0.2、8.2.9。那么我们如何安装其他的php版本和切换网站的php版本呢&#xff1f;只需要简单几步即可&#xff0c;具体如下&#xff1a…...

用友 NC saveDoc.ajax 任意文件上传漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友 NC saveDoc.ajax接口处存在任意文件…...

如何使用达摩盘

目录 1.定义 2.功能&#xff1a;圈人群、画像洞察、同步到站内渠道投放&#xff1b; 1.定义 是阿里妈妈基于商业化营销场景打造的人群精细化运营定向中台&#xff0c;涵盖消费行为、兴趣偏好、地理位置等海量数据标签&#xff0c;为商家提供个性化人群圈选&#xff0c;识别店…...

网络编程的学习

思维导图 多路复用代码练习 select完成TCP并发服务器 #include<myhead.h> #define SER_IP "192.168.125.73" //服务器IP #define SER_PORT 8888 //服务器端口号int main(int argc, const char *argv[]) {//1、创建用于监听的套接字int sfd -1;s…...

【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)

@[TOC](【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)) 具体步骤 第一步是注册您的应用程序。特别是,您需要将浏览器指向 http://apps.twitter.com,登录 Twitter(如果您尚未登录)并注册新应用程序。您现在可以为您的应用程序选择名称和描述(例如“Mining Demo”…...

2024京津冀光伏展

2024年京津冀光伏展是一个专门展示京津冀地区光伏产业发展情况的展览会。光伏产业是指利用太阳能进行发电的产业&#xff0c;它在可再生能源领域具有重要的地位。京津冀地区是中国重要的经济区域&#xff0c;也是光伏产业的发展热点地区之一。 2024年京津冀光伏展将展示京津冀地…...

给你的Alienware设备一次真正的解放:轻量级控制工具完全指南

给你的Alienware设备一次真正的解放&#xff1a;轻量级控制工具完全指南 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否曾经为Alienware Comman…...

空洞骑士模组管理革命:Scarab如何让复杂变简单?

空洞骑士模组管理革命&#xff1a;Scarab如何让复杂变简单&#xff1f; 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 还在为空洞骑士模组安装而头疼吗&#xff1f;每次手动…...

告别mmWave Studio报错:手把手教你搞定AWR2243数据采集的6个常见故障

告别mmWave Studio报错&#xff1a;手把手教你搞定AWR2243数据采集的6个常见故障 毫米波雷达开发者在数据采集阶段常会遇到各种技术障碍。AWR2243作为工业级高频雷达模块&#xff0c;其配套的mmWave Studio软件在实际操作中可能出现多种报错&#xff0c;影响开发效率。本文将针…...

企业如何利用 Taotoken 的 API Key 管理与审计日志功能加强内部控制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业如何利用 Taotoken 的 API Key 管理与审计日志功能加强内部控制 在将大模型能力引入企业技术栈的过程中&#xff0c;如何确保其…...

别再只调图表了!用Vue+Echarts做大屏,这5个布局与性能优化技巧才是关键

VueEcharts大屏实战&#xff1a;从布局到性能优化的进阶指南 当数据可视化大屏成为企业展示核心指标的标准配置&#xff0c;开发者们逐渐从"能实现功能"转向追求"极致体验"。本文将分享五个鲜少被系统总结的实战技巧&#xff0c;这些经验来自多个千万级PV项…...

小米路由器4A千兆版刷机翻车实录:从Breed救砖到完美刷入Padavan固件全记录

小米路由器4A千兆版救砖实战&#xff1a;从硬件识别到Padavan固件完美适配 深夜的台灯下&#xff0c;我盯着桌面上那台已经变砖的小米路由器4A千兆版&#xff0c;USB转TTL模块的指示灯微弱地闪烁着。这已经是本周第三次尝试救砖了——前两次要么是夹子接触不良导致校验失败&…...

新手也能搞定的12V转5V Buck电源:手把手教你用Multisim仿真验证设计

从零开始设计12V转5V Buck电源&#xff1a;Multisim仿真全流程指南 第一次接触DC-DC电源设计时&#xff0c;面对各种参数计算和仿真验证&#xff0c;很多新手都会感到无从下手。本文将带你一步步完成12V转5V的Buck电源设计&#xff0c;从理论计算到Multisim仿真验证&#xff0c…...

别再只用MSE了!PyTorch中SmoothL1Loss的保姆级使用指南(附代码对比)

深度学习回归任务中SmoothL1Loss的实战应用与MSE对比解析 在目标检测、房价预测等回归任务中&#xff0c;选择合适的损失函数往往决定了模型的收敛速度和最终性能。许多初学者会习惯性选择最熟悉的均方误差(MSE)损失函数&#xff0c;但当数据中存在离群点时&#xff0c;MSE的二…...

堆叠集成方法

原文&#xff1a;towardsdatascience.com/the-stacking-ensemble-method-984f5134463a 发现堆叠在机器学习中的力量——一种将多个模型组合成一个单一强大预测器的技术。本文从基础知识到高级技术探讨了堆叠&#xff0c;揭示了它是如何结合不同模型的优势以提高准确性的。无论你…...

双足机器人推进系统建模与系统辨识技术解析

1. 双足机器人推进系统建模与验证概述在机器人动力学控制领域&#xff0c;系统辨识是建立精确数学模型的关键技术。本文以美国东北大学开发的Harpy v2双足机器人为研究对象&#xff0c;重点探讨其集成推进系统的推力与扭矩特性建模方法。这款机器人高约1.2米&#xff0c;重15公…...