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

原型链(回顾)

  • 概念
  • prototype
  • __proto__
  • 原型链查找机制
  • 万物皆对象
  • 判断私有/共有属性方法
  • Object.prototype.prototype === null
  • Object.create(proto, [propertiesObject])
  • 给类的原型上扩展属性方法的4种方法
  • Fn.prototype.xxx = xxx
  • Object.prototype.xxx = xxx
  • f1.proto.xxx = xxx
  • 原型重定向

概念

原型:每个函数都有一个属性(原型对象):prototype ==》对象
构造函数:在prototype原型对象中,默认存在一个内置属性:constructor ==》函数
属性值就是当前函数本身,可修改
原型链:每个对象都具有一个属性:__proto__ ==> 对象
属性值就是当前实例所属类的prototype原型对象

原型链查找机制

  1. 首先找自己的私有属性,私有属性有,则调取私有属性
  2. 如果没有,默认基于__proto__原型链,找所属类prototype原型对象上的公共属性和方法
  3. 如果没有,则沿着prototype原型对象的__proto__原型链继续往上找
    直到找到Object.prototype原型对象为止
    在这里插入图片描述

万物皆对象

JS的所有值(除了undefined,null),基于__proto__原型链,都能找到Object.prototype原型对象,都是对象类的实例,也就是对象

Object.prototype.proto === null

Object的prototype原型对象是所有对象的基类,__proto__原型链属性为 null

Object.create(proto,[propertiesObject])

定义:创建一个新对象
参数1:指定该对象的prototype原型对象,必须为对象或null
参数2:传入一个对象(描述对象),默认为undefined

var obj = Object.create({ a: 1 }, {// foo会成为所创建对象的数据属性b: {writable: true,//是否可重写configurable: true,//是否可枚举enumerable: true,//是否可删除和修改特征value: "hello"//属性的值},// bar会成为所创建对象的访问器属性c: {get: function () { return 10 },// 取值器set: function (value) { // 赋值器console.log("设置的值为", value);}}
})

Object.create(null)

定义:创建一个所属类的prototype原型对象为null的空对象

var obj = Object.create(null);
console.log(obj.prototype);//undefined  对象没有pototype这个属性
console.log(obj.__proto__);// undefined 

给类的原型上扩展属性方法的4种方法

  1. Fn.prototype.xxx = xxx
    向默认开辟的堆内存中扩展属性方法
  2. Object.prototype.xxx = xxx
    内置类原型上扩展方法
  3. f1.proto.xxx = xxx
    基于实例的所属类的原型对象上扩展属性方法
    注意:IE中,禁止操作__proto__
  4. 原型重定向
    手动开辟一个堆内存赋值给 fn.prototype

例题
经典题目1
经典题目2

相关文章:

原型链(回顾)

概念prototype__proto__原型链查找机制万物皆对象判断私有/共有属性方法Object.prototype.prototype nullObject.create(proto, [propertiesObject])给类的原型上扩展属性方法的4种方法Fn.prototype.xxx xxxObject.prototype.xxx xxxf1.proto.xxx xxx原型重定向 概念 原型…...

DS内排—2-路归并排序

目录 题目描述 AC代码 题目描述 输入一组字符串,用2-路归并排序按字典顺序进行降序排序。 输入 测试次数t 每组测试数据:数据个数n,后跟n个字符串,字符串不含空格。 输出 对每组测试数据,输出2-路归并排序的每…...

深度账户抽象(Account Abstraction)第 3 部分:Wallet创建

Wallet创建 我们还没有解决的是每个用户的钱包合约最初是如何在区块链上结束的。部署合约的“传统”方式是使用 EOA 发送包含合约部署代码的且没有收件人的交易。这在这里会非常令人不满意,因为我们刚刚做了很多工作来实现它,所以有人可以在没有 EOA 的情况下与链交互。如果用…...

代码分享:面波数据快速成图

代码分享:面波数据快速成图 前言 目前,物探数据主要用surfer软件成图,surfer软件具有强大的插值和绘图功能,成图比较美观。但是,生产过程中大量的物探数据,依靠excel和surfer来成图耗费人力时间成本。本博…...

常见数据结构

一. 数据结构概述、栈、队列 1. 数据结构概述 2. 栈数据结构的执行特点 3. 常见数据结构之队列 二. 常见数据结构之数组 数组它就是内存中的一块儿连续区域。数组变量存的是数组在堆内存当中的起始地址。数组查询任意索引位置的值耗时相同,数组根据索引查询速度快。…...

Mycat

Mycat 1.概述 1.Mycat是数据中间件2.中间件:连接软件组件和应用的计算机软件,便于软件和各部件的交互3.数据中间件:连接Java应用程序与数据库的软件2.适用场景 1.Java与数据库紧耦合(直接连接)2.高访问量高并发对数据库压力(集群)3.读写请求数据不一致(读写分离+主从复制)3.…...

Java 编写Vue组件(VueGWT的初尝试)

在之前,我曾写过这样的文章《不会前端没事,用GWT Boot和Spring Boot构建Web程序》,这篇文字使用的Domino UI来做前端页面,由于现在更流行VUE,并且VUE的页面更具现代化,所以我尝试了一下VueGWT。 VueGWT 有…...

【第二章 @RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符】

第二章 RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符 1. RequestMapping注解: (1) RequestMapping注解的作用就是将请…...

QML Text详解

1.简介 文本项可以显示普通文本和富文本。 2.示例 示例1:一个简单的text,可以设置字体颜色、大小等。 Window {visible: truewidth: 400height: 400title: qsTr("Hello World")Rectangle{width: 200height: 200border.width: 2Text {text: …...

xxl-job启用https访问

一、准备证书 1.进入想要生成证书的目录 2.在路径中输入cmd,点击回车 (1) (2) 3.输入命令keytool -genkeypair -alias "boot" -keyalg "RSA" -keystore "seek.keystore" 4.输入信息&#xff0c…...

2023FL Studio最新中文版电子音乐、混音和母带制作DAW

水果具有独特的底层逻辑,其开创了编曲“块”的思维。用FL Studio编曲的流程是在把一个样式编辑好,然后将编辑好的样式当做音频块,在播放列表中像“搭积木”一样任意编排,形成一首歌,这种模式非常利于电子音乐编曲。 2…...

pytorch 35 yolov5_obb项目解读+使用技巧+调优经验(提升map)

yolov5_obb是一个用于旋转框预测的开源项目,项目地址为https://github.com/hukaixuan19970627/yolov5_obb。在使用yolov5_obb进行训练时,可能存在训练后精度不达标。使用yolov5_obb项目一定要对yolov5_obb的基本实现和关键部分要有所了解,同时对于使用过程中的参数设置,数据…...

OpenMv H7 口罩识别--毕业设计学习记录

刚开始都不知道自己的摄像头是OpenMv H7的还是OpenMv H7 Plus来的(白嫖实训室的,其实大概率猜到是H7来的,主要是不死心),后面问了一下ChatGPT。 总结大概就是: 1、都是STM32H743 主控,但是频率的MCU(480MHz…...

有什么比较好的bug管理工具?5款热门工具推荐

工具再优秀,适合自己才最重要。 为尽量讲透这个问题,本文的行文结构我先整理如下: 1、为什么需要bug管理工具? 2、好的bug管理工具的标准是什么? 3、好的bug管理工具推荐(5款) 4、如何挑选适合…...

第五章 opengl之摄像机

OpenGL摄像机摄像机/观察空间Look At矩阵自由移动移动速度视角移动欧拉角鼠标输入缩放补充:摄像机类摄像机 OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的…...

nginx配置详解(容器、负载)—官方原版

一、概述本指南对nginx进行了基本介绍,并描述了一些 可以用它完成的简单任务。 据推测,nginx已经安装在阅读器的机器上。 本指南描述了如何启动和停止nginx,并重新加载其 配置,解释结构 的配置文件,并描述了如何设置 n…...

2023年中职网络安全竞赛——CMS网站渗透解析

需求环境可私信博主 解析如下: CMS网站渗透 任务环境说明: 服务器场景:Server2206(关闭链接) 服务器场景操作系统:未知 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; Flag:8089...

SQL 窗口函数详解

SQL窗口函数详解 窗口函数的主要作用是对数据进行分组排序、求和、求平均值、计数等。 一、窗口函数的基本语法 <分析函数> OVER ([PARTITION BY <列清单>] ORDER BY <排序用列清单> [ROWS BETWEEN 开始位置 AND 结束位置])理解窗口函数的基本语法&#xff…...

Android 12系统源码_SystemUI(六)显示和隐藏最近任务

前言 Android12对最近任务做了调整&#xff0c;将原本处于SystemUI模块的最近任务转移到了Launcher3QuickStep应用中。 本篇文章我们会结合源码一起来梳理一下最近任务的显示流程。 一、SystemUI模块显示最近任务的相关代码 1、在SystemUI模块调用CommandQueue的showRecentA…...

Docekr三剑客之 Docekr compose

写在前面 Docker三剑客Docker Compose、Docker Machine、Docker Swarm分别是Docker官方开源的三个项目。有着不同的功能&#xff1a; Docker Compose负责实现对 Docker 容器集群的快速编排Docker Machine负责在多种平台上快速安装 Docker 环境Docker Swarm提供 Docker 容器集…...

收藏!程序员/小白入门大模型必看,我的AI学习踩坑与正确路线分享

很多程序员和小白同学都私信我说&#xff0c;想入门AI、学习大模型&#xff0c;但始终找不到清晰的切入点&#xff0c;不知道该从哪里开始&#xff0c;也没有适合自己的学习路线。我深耕技术领域多年&#xff0c;从前端自学起步&#xff0c;后来转型学习AI与大模型&#xff0c;…...

WWW-万维网

万维网的概念与组成结构万维网&#xff08;World Wide Web&#xff0c;WWW&#xff09;是一个分布式的信息存储空间&#xff0c;在这个空间中&#xff1a;一个事物被称为一样 “资源”&#xff0c;并由一个全域 “统一资源定位符”&#xff08;URL&#xff09;标识。这些资源通…...

蓄电池与超级电容混合储能微电网的未讲解部分总结

蓄电池 超级电容混合储能微电网 没有讲解搞离网微电网的都懂&#xff0c;储能这块一直是卡脖子的事儿——单独堆蓄电池吧&#xff0c;遇到村里突然开个打米机、抽水泵这种大负载&#xff0c;瞬间电流顶上去&#xff0c;电瓶寿命唰唰掉&#xff1b;全上超级电容呢&#xff0c;确…...

Django REST framework的应用场景

目录一、鉴权开发框架介绍二、Django REST framework是什么三、如何实现认证、权限与限流功能四、Django REST framework的应用场景一、鉴权开发框架介绍 鉴权开发框架是一种用于实现身份验证和授权的软件开发工具。它可以帮助开发者快速构建安全、可靠的身份验证和授权系统&a…...

MicroOS:Arduino轻量级任务调度内核详解

1. MicroOS&#xff1a;面向Arduino的轻量级任务管理内核概述MicroOS是一个专为Arduino平台设计的极简型实时任务管理器&#xff0c;其核心定位并非替代FreeRTOS或Zephyr等完整RTOS&#xff0c;而是填补Arduino原生loop()单线程模型在多任务调度、精确定时与事件解耦方面的空白…...

LFM2.5-1.2B-Thinking-GGUF惊艳效果:复杂逻辑推理题(如数理推导)分步求解

LFM2.5-1.2B-Thinking-GGUF惊艳效果&#xff1a;复杂逻辑推理题&#xff08;如数理推导&#xff09;分步求解 1. 模型能力概览 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。这个1.2B参数的模型采用GGUF格式&#xff0…...

Dify私有化部署实战:如何在企业内网快速搭建AI开发平台(含Docker镜像打包技巧)

Dify私有化部署实战&#xff1a;企业内网AI开发平台搭建全攻略 1. 企业内网部署Dify的核心价值与挑战 在数字化转型浪潮中&#xff0c;越来越多的企业开始将AI能力纳入核心业务系统。Dify作为开源的大语言模型应用开发平台&#xff0c;其私有化部署方案尤其适合对数据安全有严…...

别再让电费偷偷溜走!用智能时间开关改造家里的热水器和空调(附保姆级选购指南)

别再让电费偷偷溜走&#xff01;用智能时间开关改造家里的热水器和空调&#xff08;附保姆级选购指南&#xff09; 每到月底收到电费账单时&#xff0c;那种"钱不知不觉就溜走"的感觉总是让人心疼。特别是热水器和空调这两大"电老虎"&#xff0c;它们往往…...

AD21实战:3种方法搞定Keepout和机械层互转,最后一种能救急

AD21实战&#xff1a;3种高效解决Keepout与机械层互转难题的方法 在PCB设计过程中&#xff0c;Keepout层和机械层的正确使用与转换是确保设计准确性的关键环节。许多工程师都遇到过这样的困境&#xff1a;当设计文件中包含复杂图形元素时&#xff0c;简单的层切换或属性批量修…...

2026年03月27日全球AI前沿动态

一句话总结AI领域覆盖通用/垂直大模型、智能体应用、物理机器人、硬件算力、企业战略、产品更新、投融资、行业观点、民生教育、研究资源全维度&#xff0c;国产技术密集突破、智能体全面落地、硬件自研提速、安全风险频发、老年AI教育落地&#xff0c;行业向实用化、国产化、安…...