原型原型链总结

原型链 什么是原型链?为什么要使用原型链呢?使用原型链有什么作用? 原型链 什么是原型链?为什么要使用原型链呢?使用原型链有什么作用?原型链的特点__proto__和prototype的区别示例代码控制台测试详解图话说回来,原型链既然是一个链条,那肯定是存在一个开头的吧,那它是从哪开始的呢?我们如何才能知道? 什么是原型链? 原型链通俗易懂的理解就是可以把它想象成一个... 阅读详情

原型

原型是函数特有的,构造函数制造出对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。

我们先写一个构造函数

function Person() {

}
var person = new Person();
person.name = 'luoxi';
console.log(person.name) // luoxi

在这个例子中,Person 就是一个构造函数,我们使用 new 创建了一个实例对象 person。

prototype

每个函数都有一个 prototype 属性,就是我们经常在各种例子中看到的那个 prototype ,比如:

function Person() {

}
// 虽然写在注释里,但是你要注意:
// prototype是函数才会有的属性
Person.prototype.name = 'luoxi';
var person1 = new Person();
var person2 = new Person();
console.log(person1.name) // luoxi
console.log(person2.name) // luoxi

其实,函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是这个例子中的 person1 和 person2 的原型。

那什么是原型呢?你可以这样理解:每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。

proto

这是每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__,这个属性会指向该对象的原型。
注意:函数只能通过 prototype访问原型,已经访问的原型对象不再为函数对象,为普通对象。也就是person为普通对象。

constructor

每个原型都有一个 constructor 属性指向关联的构造函数。

function Person() {

}
console.log(Person === Person.prototype.constructor); // true
function Person() {

}

var person = new Person();

console.log(person.__proto__ == Person.prototype) // true
console.log(Person.prototype.constructor == Person) // true
// 顺便学习一个ES5的方法,可以获得对象的原型
console.log(Object.getPrototypeOf(person) === Person.prototype) // true

了解了构造函数、实例原型、和实例之间的关系,接下来我们讲讲实例和原型的关系:

实例与原型

当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。

function Person() {

}

Person.prototype.name = 'Kevin';

var person = new Person();

person.name = 'Daisy';
console.log(person.name) // Daisy

delete person.name;
console.log(person.name) // Kevin

在这个例子中,我们给实例对象 person 添加了 name 属性,当我们打印 person.name 的时候,结果自然为 Daisy。

但是当我们删除了 person 的 name 属性时,读取 person.name,从 person 对象中找不到 name 属性就会从 person 的原型也就是 person.proto ,也就是 Person.prototype中查找,幸运的是我们找到了 name 属性,结果为 Kevin。

原型的原型

在前面,我们已经讲了原型也是一个对象,既然是对象,我们就可以用最原始的方式创建它

var obj = new Object();
obj.name = 'luoxi'
console.log(obj.name) // Kevin

其实原型对象就是通过 Object 构造函数生成的,结合之前所讲,实例的 proto 指向构造函数的 prototype

原型链

那 Object.prototype 的原型呢?

null,我们可以打印:

console.log(Object.prototype.__proto__ === null) // true

然而 null 究竟代表了什么呢?

null 表示“没有对象”,即该处不应该有值。

所以 Object.prototype.proto 的值为 null 跟 Object.prototype 没有原型,其实表达了一个意思。

所以查找属性的时候查到 Object.prototype 就可以停止查找了。

单细胞数据pseudobulks差异分析实战:从聚合到DESeq2 本文详细介绍了单细胞转录组数据分析中pseudobulks(伪散装)方法的实战流程。通过将同一样本的同类型细胞表达值聚合,模拟Bulk RNA-seq数据,再利用DESeq2进行稳健的差异基因分析。该方法有效降低了单细胞数据的技术噪音,特别适用于样本量有限但追求结果稳定性的研究场景,并提供了完整的R代码实现与结果解读指南。 阅读详情

相关推荐

人工智能机器学习从入门到高级学习资料(含资料下载地址)

机器学习是一个技术含量较高的领域,高效学习需要多种途径相结合.以下是一些推荐的学习资源。首先介绍几个比较有用的社区,包含了丰富的学习资料

2401_86900375的博客 1647

原型与原型链总结

显示原型、隐式原型以及Object对象上的一些方法

Zhuzhu123qwwe的博客 232

SAP-ABAP:SAP ABAP 深度解析:BAPI 从入门到精通 —— 原理、实战与自定义开发全指南

SAP ABAP BAPI 深度解析摘要 本文全面介绍了 SAP ABAP 中的 BAPI(业务应用程序编程接口)技术,涵盖以下核心内容: BAPI 定义与特点:BAPI 是 SAP 为业务对象提供的标准化编程接口,具有面向对象、封装业务逻辑、标准化错误处理和版本兼容性等特点。 BAPI 与 RFC 关系:所有 BAPI 都是 RFC,但需额外满足业务对象注册、标准化参数和错误处理等要求。 BAPI 核心作用:包括业务逻辑封装、系统集成、标准化错误处理、版本兼容和审计合规。 实战演示:通过创建销售订单的完整

baidu_35680696的博客 1033

关于原型、原型链的一些总结

原型的[[prototype]]属性(在某些浏览器中可用__proto__属性)指向其原型,当这个原型又是另外一个原型的实例,那个原型的[[prototype]]属性会指向另一个原型,以此类推,这样在实例和原型之间构造了一条原型链。利用原型链,当在一个实例上找不到一个属性的时候,就会沿着原型链找它的原型,如果此时的原型有这个属性,就返回这个属性,如果没有则继续往上一层的原型寻找,直到null(原型链的尽头),这时候就返回undefind。原型链主要是指实例与原型的关系,与构造函数无关。

Vince_jun的博客 226

CXL Virtual Hierarchy (VH) Enumeration理解

在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。

Summer的博客 1002

NVIDIA Isaac Sim 入门教程(二)

Omniverse Isaac Sim 的工作空间非常容易自定义。调整用户界面的大小、停靠、取消停靠、添加和移除面板都非常容易。进入顶部菜单栏,单击下拉菜单最下方的窗口 > 视口 > 视口 2(现在工作区中应该会出现一个名为 "视口 2 "的新视口。如果您想创建更多的视口,请按照相机检查器扩展进行操作。单击并拖动视口 2 的顶部标题以激活停靠部件。拖放到原始视口的右侧,将两个视口并排放置。单击并向左拖动视口 2 的左侧,使视口大小相等。

机器人控制与仿真应用 6545

js原型和原型链的总结

js原型和原型链的总结一、原型对象三角关系Function函数Object函数总结二、原型链 一、原型 对象三角关系 每个"构造函数"中都有一个默认的属性叫做prototype,保存着一个对象, 这个对象我们称之为"原型对象" 每个"原型对象"中都有一个默认的属性叫做constructor,指向当前原型对象对应的那个"构造函数" 通过构造函数创建出来的对象我们称之为"实例对象",每个"实例对象"中都有一个默认的属性叫做__proto__,指向创建它的那个构造函数的"原型对象" Function函数

weixin_43601554的博客 628

Android11.0(R) MTK 平台开机logo动态替换(by logo.bin方式)

实现的效果 客户提供一张格式为 bmp 的开机logo,在 linux 环境下执行制作 logo.bin 脚本文件, apk 拷贝 logo.bin 文件替换系统原有的bin,然后重启 logo 自动更新。 原理分析 MTK 平台的充电图片和开机logo都是打包到 logo.bin 中的 对应的资源路径在源码 vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo 系统一般预制了很多分辨率文件夹,实际通过 BOOT_LOGO 来确定打包那一个

cczhengv 4585

关于原型链的部分总结

关于原型链的部分总结

weixin_48780364的博客 518

【光子AI 2026 企业级 Agent 架构指南】别再把 Skill 当 Tool:Agent Skills × MCP 企业级落地全指南(最新定义澄清 + 场景大全 + 选型决策树+安全工程清单)

摘要: 2026年企业级AI架构迎来两大核心标准——Agent Skills与MCP(Model Context Protocol),分别解决流程标准化与系统集成难题。Agent Skills通过“文件夹化能力包”(SOP+脚本+模板)固化专家流程,确保输出一致性;MCP则以类USB-C的协议统一外部系统接入,降低集成成本。两者差异显著:Skills专注程序性知识(如财报生成),MCP侧重动态连接(如跨平台数据调用)。实际场景中,复杂需求(如智能客服)需组合使用——MCP为骨架提供连接能力,Skills为大

AI天才研究院 2473

【数据分析八步法】将模糊需求转化为可验证的分析问题

国内访问Huggingface官方源常遇网络问题,可通过切换国内镜像提升下载速度。三种配置方式:1)设置HF_ENDPOINT环境变量;2)在from_pretrained中直接指定镜像参数;3)修改本地Huggingface配置文件。常用镜像包括hf-mirror.com、阿里云ModelScope和清华镜像源。注意镜像同步延迟、私有模型限制,建议配合huggingface-cli工具使用,必要时取消代理设置。合理配置镜像源可显著改善Huggingface生态使用体验。

Mr数据杨 858

原型及原型链详解

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么假如我们让原型对象等于另一个类型的实例,结果会怎样?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。这就是所谓的原型链的基本概念。——摘自《javascript高级程序设计》

dyy_csdn的博客 3万+

GRCNN抓取网络学习3【自制Jacquard数据集模型调优】

请先完成,这样有利于下面操作的理解!然后第二步是,有了自己的数据集输入到GRCNN中是三种文件,那么可以GRCNN抓取网络学习2【自制Jacquard数据集训练】!既然学会训练,那么开展下一步计划模型调优。GRCNN源码:https://github.com/skumra/robotic-grasping。

vor234的博客 2502

【原型和原型链】什么是原型和原型链

一、原型 ①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象 ②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象 ③所有引用类型的__proto__属性指向它构造函数的prototype var a = [1,2,3]; a.__proto__ === Array.prototype; // true 二、原型链 ...

沉迷学习 日渐消瘦 10万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

什么是原型、原型链?原型和原型链的作用(有图方便理解)

原型:JS声明构造函数(用来实例化对象的函数)时,会在内存中创建一个对应的对象,这个对象就是原函数的原型。构造函数默认有一个prototype属性,prototype的值指向函数的原型。同时原型中也有一个constructor属性,constructor的值指向函数对象。 通过构造函数实例化出来的对象,并不具有prototype属性,其默认有一个__proto__属性,__proto__的值指向构造函数的原型。在原型对象上添加或修改的属性,在所有实例化出的对象上都可共享。 /*代码基本架构 1.每个函数.

weixin_42125732的博客 3万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

原型和原型链

原型和原型链都是来源于对象而服务于对象的概念JavaScript的一切引用类型都是对象,对象就是属性的集合。

2302_77437037的博客 2048

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

原型链,什么是原型链?原型链的作用

原型链 什么是原型链? 为什么要使用原型链呢? 使用原型链有什么作用? 原型链的特点 __proto__和prototype的区别 示例代码 控制台测试详解图 话说回来,原型链既然是一个链条,那肯定是存在一个开头的吧,那它是从哪开始的呢?我们如何才能知道? 什么是原型链? 原型链通俗易懂的理解就是可以把它想象成一个链条,互相连接构成一整串链子! 而原型链中就是实例对象和原型对象之间的链接。每个函数都有一个prototype属性,这个prototype属性就是我们的原型对象,我们拿这个.

qq_51486722的博客 5789

原型 原型链

当我们尝试访问一个对象的某个属性或方法时,JavaScript会首先在当前对象本身查找该属性或方法。如果找不到,则会沿着原型链向上查找,直到找到为止。由于john对象本身没有这个方法,所以会沿着原型链向上查找,最终在Person.prototype上找到了这个方法并执行。这样,通过每个对象的__proto__属性和构造函数的prototype属性,我们可以将多个对象链接起来,形成一个链式结构,这就是原型链。补充一句,只要是对象就会拥有__proto__属性指向上一级的原型对象。

qq505751223的博客 1980

原型与原型链详解

prototype:原型 每一个函数都有一个prototype属性,它默认指向一个空对象。 举个例子,我们来查看一下Date函数的原型: console.log(Date.prototype) // Object 这就表示,Date函数的原型,是一个Object对象,这个对象身上有很多的方法,这些方法均是Object()原型给它的实例对象使用的。 我们再来看一个自定义函数的原型: function fun() {} console.log( fun.prototype ) ...

拯救世界的光太郎 5398

JavaScript原型链

1.原型链 1.1 原型链解释: (概念) 原型链指一些原型通过__proto__指针构成的链表,一个原型链可以为想共享原型链中数据的对象服务,用于实现JavaScript中的继承机制。 (原型链指针) 原型链中涉及到的指针: 每个对象都有一个__proto__指针来访问对象的原型 每个原型都是一个用于实现继承的对象,除了有__proto__指针之外,还有constructor指针指向构造函数 每个函数都是一个对象,除了有__proto__指针之外,还有prototype指针指向与之关联的原型对象

qq_37464878的博客 6692

原型与原型链

prototype 是函数才有的属性,这个属性指向一个对象,该对象正是调用该构造函数而创建的实例的原型。。。在最新 ES 规范里,prototype 被定义为:给其它对象。prototype 自己也是对象,只是被用以承担某个职能罢了。prototype 描述的是两个对象之间的某种(委托)关系(其中一个,为另一个提供属性访问权限)。每个函数都有一个 prototype 属性,它默认指向一个 Object 空对象(即称为:原型对象)。

weixin_67619405的博客 1278

Javascript原型链详解,一文带你彻底搞懂js原型、原型对象及原型链

原型链是 JavaScript 中的一个重要特性,它是实现对象之间继承关系的机制。在 JavaScript 中,每个对象都有一个原型属性,指向另一个对象。当试图访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript 引擎会沿着原型链向上查找,直到找到对应的属性或方法为止。

greatming666的博客 2110

原型和原型链的关系,以及什么是原型和原型链

一、原型 ①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象 ②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象 ③所有引用类型的__proto__属性指向它构造函数的prototype 二、原型链 当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的proto...

雷佳佳的博客 7512

JS:原型链、原型链的查找、原型链的遮蔽效应、原型链的终点、关于数组的原型链

JS:原型链、原型链的查找、原型链的遮蔽效应、原型链的终点、关于数组的原型链 一、原型链 1、原型链: 每个对象都可以有一个原型_proto_,这个原型还可以有它自己的原型,以此类推,形成一个原型链。查找特定属性的时候,我们先去这个对象里去找,如果没有的话就去它的原型对象里面去,如果还是没有的话再去向原型对象的原型对象里去寻找… 这个操作被委托在整个原型链上,这个就是我们说的原型链了。 2 prototype和constructor prototype属性,它是函数所独有的,它是从一个函数指向一个对象。

liuxudanhahaha的博客 1722
上一篇: js数组迭代方法
C. Two
博客等级 码龄7年 0粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值