JS 原型链,原型链的顶端是什么?Object 的原型是什么?Object 的原型的原型是什么?在数组原型链上实现删除数组重复数据的方法?

避坑指南:RK3588视频编码与SRT推流实战中,我遇到的5个典型问题及解决方案 本文深度解析RK3588平台视频编码与SRT推流实战中的五个典型问题,包括MIPI摄像头内存对齐、多线程数据传递、FFmpeg时间戳设置、SRT连接参数调优及系统资源监控。提供具体解决方案和优化技巧,帮助开发者高效实现实时视频网络传输。 阅读详情
能够把这个讲清楚弄明白是一件很困难的事,
首先明白原型是什么,在 ES6 之前,JS 没有类和继承的概念,JS 是通过原型来实现继
承的,在 JS 中一个构造函数默认带有一个 prototype 属性,这个的属性值是一个对象,
同时这个 prototype 对象自带有一个 constructor 属性,这个属性指向这个构造函数,同时
每一个实例都会有一个_proto_属性指向这个 prototype 对象,我们可以把这个叫做隐式原
型,我们在使用一个实例的方法的时候,会先检查这个实例中是否有这个方法,没有的
话就会检查这个 prototype 对象是否有这个方法,
基于这个规则,如果让原型对象指向另一个类型的实例,即
constructor1.protoytpe=instance2,这时候如果试图引用 constructor1 构造的实例 instance1
的某个属性 p1,
首先会在 instance1 内部属性中找一遍,
接着会在 instance1._proto_(
constructor1.prototype)即是 instance2 中寻找 p1
搜寻轨迹:instance1->instance2->constructor2.prototype……->Object.prototype;这即是原
型链,原型链顶端是 Object.prototype
补充学习:
每个函数都有一个 prototype 属性,这个属性指向了一个对象,这个对象正是调用该函数
而创建的实例的原型,那么什么是原型呢,可以这样理解,每一个 JavaScript 对象在创
建的时候就会预制管理另一个对象,这个对象就是我们所说的原型,每一个对象都会从
原型继承属性,如图:

 

那么怎么表示实例与实例原型的关系呢,这时候就要用到第二个属性_proto_
这是每一个 JS 对象都会有的一个属性,指向这个对象的原型,如图:

 

既然实例对象和构造函数都可以指向原型,那么原型是否有属性指向构造函数或者实例
呢,指向实例是没有的,因为一个构造函数可以生成多个实例,但是原型有属性可以直
接指向构造函数,通过 constructor 即可
接下来讲解实例和原型的关系:
当读取实例的属性时,如果找不到,就会查找与对象相关的原型中的属性,如果还查不
到,就去找原型的原型,一直找到最顶层,那么原型的原型是什么呢,首先,原型也是
一个对象,既然是对象,我们就可以通过构造函数的方式创建它,所以原型对象就是通
过 Object 构造函数生成的,如图:

 

那么 Object.prototype 的原型呢,我们可以打印 console.log(Object.prototype.__proto__ ===
null),返回 true
null 表示没有对象,即该处不应有值,所以 Object.prototype 没有原型,如图:
图中这条蓝色的线即是原型链,
最后补充三点:
constructor:
function Person(){
}
var person = new Person();
console.log(Person === person.constructor);
原本 person 中没有 constructor 属性,当不能读取到 constructor 属性时,会从 person 的原
型中读取,所以指向构造函数 Person
__proto__:
绝大部分浏览器支持这个非标准的方法访问原型,然而它并不存在与 Person.prototype 中,
实际上它来自 Object.prototype,当使用 obj.__proto__时,可以理解为返回来
Object.getPrototype(obj)
继承:
前面说到,每个对象都会从原型继承属性,但是引用《你不知道的 JS》中的话,继承意
味着复制操作,然而 JS 默认不会复制对象的属性,相反,JS 只是在两个对象之间创建
一个关联,这样子一个对象就可以通过委托访问另一个对象的属性和函数,所以与其叫
继承,叫委托更合适。

 

Halcon那些事:Halcon缺陷检测检测印刷数字完整性 创建模板 create_shape_model模板匹配 find_shape_model。 阅读详情

相关推荐

【NIFI】实现HANA->ORACLE数据同步

实现 HANA->ORACLE数据同步。

weixin_43159039的博客 1508

原型 原型链

标题 在最近的原型和原型链的学习中,感觉压力有点大,学习难度也比较大,但又很基础很重要,我们在学习中得要下很大的功夫才行。 无论什么时候,只要创建了一个新的函数,就会根据一组特定的规则为这个函数创建一个prototype的属性,prototype这个属性指向函数的原型对象,然后所有的的原型对象都会有一个constructor的属性,这个属性包含着一个指向prototype属性所在函数的指针。 原型...

hutao2333的博客 1282

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

1072

原型链的顶端是什么

js中到处是对象,对象之间往往会通过__proto__连接在一起,这种链接的现象被称为原型链。极少数的对象会滑原型,比如: Object.create(null)生生的对象里面没有任何属性,非常“空”,我们称它为字典,这种字典对象适合存放数据,不必担心原型带来的副作用。 对象生的有三种方式,一种是上面的Object.create(),一中是字面量(var a = {}),另外一种是通过构造函数(v...

qq_29055201的博客 8005

华为使用MicroG安装并使用Google服务教程

鉴于众多华为手机用户因无法使用Google服务而感到不便,我经过多次摸索和测试,总结了一份简单易懂的教程,希望能够帮助到大家。无论是需要使用Google Play商店下载应用,还是需要使用Google服务进行工作和学习,本文将详细介绍如何在华为手机上安装并使用Google服务。二、前置条件软件要求:Aurora Store(替代Google Play商店)、MicroG Companion、MicroG Server(替代Google框架)

weixin_41926602的博客 3万+

ChatGPT and Claude国内使用站点

这篇博客介绍了不同的AI聊天平台和定价信息,主要对比了ChatGPT和Claude两款产品。文章列出了多个提供聊天服务的AI平台,包括RawChat、ChatGPTPlus、ChatOpens、Wildcard和2233.ai等,并提供了每个平台的网页链接和定价详情。特别关注了Claude平台,介绍了其普通账号与会员账号的不同,以及相关的定价信息。此外,还提到了一些虚拟卡定价和服务细节,为用户选择合适的AI服务提供了多种参考。

nisidjndn的博客 1万+

【面试题】js原型链顶端是什么,Object的原型是什么,Object的原型的原型是什么

第一个问题:原型链的顶端是什么?从图中不难看出,原型链的顶端就是null; 第二个问题:Object的原型是什么?那么就是Object.prototype; 第三个问题:Object的原型的原型是什么?Object的原型是Object.prototype,而指向原型的方法是__proto__,而从图中可以看出来Object的原型的__proto__指向的是null,那么Object的原型的原型是null;

Sugarcanking的博客 683

基于STM32的智能台灯PWM调光与人体感应融合设计

本文详细介绍了基于STM32单片机的智能台灯设计方案,重点讲解了PWM调光技术与人体感应模块的融合实现。通过STM32的高级定时器产生精准PWM信号控制LED亮度,结合红外传感器实现人来灯亮、人走灯灭的智能体验,同时集成光敏传感实现环境自适应调光,打造高效节能的智能照明解决方案。

threejs5artist的博客 826

JavaScript——原型/原型链中的顶层对象(图解)

本篇需要提前了解的知识储备:原型和原型链,以下仅概要介绍,不作详细讲解。 详细学习可参考: JavaScript——面向对象(封装):https://blog.youkuaiyun.com/qq_29493173/article/details/118404400 JavaScript——面向对象之继承(原型对象)与多态(重载、重写):https://blog.youkuaiyun.com/qq_29493173/article/details/118410075 构造函数/原型/原型链 构造函数:定义一类对象的统一结构 原型(

Erya Programming learning 4948

不只是CPU主频:深入解析英飞凌Aurix TC3xx各外设时钟树(CAN、以太网、Flash时序如何配置)

本文深入解析英飞凌Aurix TC3xx系列微控制器的外设时钟树配置,涵盖CAN、以太网和Flash时序的优化方法。通过详细分析时钟系统架构、关键外设配置及多外设协同设计策略,帮助工程师实现高性能汽车电子控制单元(ECU)开发。特别关注系统时钟的灵活配置与EMC优化技巧,提升系统实时性和可靠性。

weixin_29189373的博客 401

从零开始:用ZEMAX设计双高斯照相物镜的完整流程(附55mm焦距实例)

本文详细介绍了使用ZEMAX设计双高斯照相物镜的完整流程,特别针对55mm焦距实例进行了深入解析。从初始结构选择、参数设置到优化策略和像质分析,逐步指导读者掌握这一经典光学设计方法。通过具体实例展示了如何实现卓越的像差校正,适用于35mm相机标准镜头等应用场景。

onion的博客 706

js原型与原型链详解(万文总结,一文搞懂原型链!)

JavaScript中的原型和原型链:1,每个对象均存在隐式原型(__proto__),函数对象才有prototype属性2,__proto__存在的意义在于为原型链查找提供方向,原型链查找靠的是__proto__,而不是prototype3,函数对象的__proto__都指向Function.prototype4,每个对象都有一个隐式原型属性(__proto__),多个原型通过__proto__链接在一起形成的链式结构就是原型链😃。

Yi_qian的博客 3万+

模型泛化能力提升:领域自适应与迁移学习

模型泛化能力提升:领域自适应与迁移学习​ ,人工智能,计算机视觉,大模型,AI,在机器学习和深度学习的应用中,模型的泛化能力是一个关键问题。泛化能力指的是模型在新的、未见过的数据上表现良好的能力。然而,实际情况中,训练数据和测试数据往往来自不同的领域,存在分布差异,这会导致模型的泛化能力下降。领域自适应与迁移学习正是为了解决这一问题而发展起来的重要技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

2020前端面试(十二)- 作用域与原型链

点这里,欢迎关注 文章目录一. 作用域相关1.js的编译时与运行时2.执行环境(词法作用域)与作用域链3.函数声明,函数表达式,匿名函数,立即执行函数:4.什么是闭包5.立即执行函数IIFE6.闭包有什么作用7.闭包在实际中的应用:(1)定时器(2)事件监听器(3)单例模式(4)js的节流和防抖(5)如何实现一个私有变量,用getName方法可以访问,不能直接访问(6)实现一个once函数(传入函数参数),使其只能执行一次二.JS中的垃圾回收机制三. 原型链相关1.讲一讲js原型链,原型链的顶端是什么?Ob

qq_41800649的博客 1086

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

面试题-JavaScript

文章目录1-get 请求传参长度的误区2-get 和 post 请求在缓存方面的区别3-说一下闭包4-说一下类的创建和继承5-如何解决异步回调地狱6-说说前端中的事件流7-如何让事件先冒泡后捕获8-说一下事件委托9-说一下图片的懒加载和预加载10-mouseover 和 mouseenter 的区别11-JS 的 new 操作符做了哪些事情12-改变函数内部 this 指针的指向函数(bind,apply,call 的区别)13-JS 的各种位置,比如 clientHeight,scrollHeight,o

互联网小队 7731

数学建模模型总结

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

js原型链添加方法 两个数组对比删除相同元素,返回未出现的数

/** * 扩展Array,添加remove方法 * @param val */ Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; ...

末代前端程序员 664

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

知识梳理——JavaScript

1. 说说前端中的事件流 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件onclick、页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件。想要知道这些事件是在什么时候进行调用的,就需要了解一下“事件流”的概念。 什么是事件流:事件流描述的是从页面中接收事件的顺序. DOM2级事件流包括下面几个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段 addEventListener:addEventListener 是DOM2 级事件新增的指定事件处

wytraining 1632

面向面试题的前端学习-js篇(自用,持续完善中)

前言:初心是记录面试题,慢慢由每个知识点引伸出去,逐渐查缺补漏,构建出更完善的前端知识系统。 题目来源:牛客网 gitnub 目录HTTP协议get和postget请求传参长度的误区补充get和post请求在缓存方面的区别get和post的区别作用域和闭包闭包是什么闭包的作用说一下类的创建和继承如何实现一个私有变量,用getName方法可以访问,不能直接访问异步回调如何解决异步回调地狱简单的实现一个promise将原生的ajax封装成promise事件说一下什么是virtual dom说说前端中的事

qq_45129167的博客 2647

前端面经整理

如果静态文件都放在主域名下,那静态文件请求的时候都带有的cookie的数据提交给server的,非常浪费流量,所以不如隔离开。因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请求头的大小,降低请求时间,从而达到降低整体请求延时的目的。同时这种方式不会将cookie传入server,也减少了server对cookie的处理分析环节,提高了server的http请求的解析速度。

m0_65912225的博客 5592

前端面经整理,零基础入门到精通,收藏这篇就够了

定义段落定义表格标签定义列表项目定义无序列表定义有序列表(2)行内元素:又称为内联元素,行内元素的大小是靠本身内容的大小,宽高都设置无效。标签定义超链接表示一缩写形式定义只取首字母缩写定义字体缩写可覆盖默认的文本方向定义大号字体加粗定义换行定义计算机代码文本 标签 创建单选或多选菜单 组合文档中的行内元素(3)行内块元素:行内块元素从文字上看像块级元素和行内元素结合似的,其实比较特殊,比如,可以设置宽高属性,这种就称为行内块元素。懒加载和预加载?

Javachichi的博客 890

2022前端面试题集合

2022前端面试题集合

m0_69450653的博客 297

JavaScript中的原型和原型链

什么是原型? 原型(prototype)是function对象的一个属性,它定义了构造函数制造出的实例对象的公共祖先。通过同一个构造函数生产出的对象,可以继承该原型的属性和方法,原型本质上也是对象。 什么是原型链? 所有对象(Object除外)都有一个隐式原型属性:__proto__(前后都是两个下划线),属性值为它的构造函数的prototype的属性值。当查找某个对象的属性时,如果这...

Mr.Starl 450

原型链详解

有些小伙伴可能会觉得原型链难以理解,这篇文章带你熟悉原型链, 你会发现原型链并不难

qq_61233877的博客 6208

面试官最喜欢问的原型链

原型链 Javascript内置的继承方法被称为原型对象链,又称为原型对象继承。对于一个对象,因为它继承了它的原型对象的属性,所以它能够访问这些属性。同理,原型对象也是一个对象,它也有自己的原型对象,因此也可以继承它的原型对象的属性。这样环环相扣的过程就叫做原型链 ...

zero_person_xianzi的博客 2万+

关于js中的原型链解释

关于js中的原型解释 Object.prototype只是一个普通对象,它是js原型链的最顶端Object.prototype.proto=== null;//true  Object.prototype.prototype === undefied;//true Object.prototype只是一个普通对象(普通对象没有prototype属性,所以值是undefined),Object.prototype是js原型链的最顶端,它的__proto__是null(有__proto__属性,但值

douzixh的博客 605

原型对象、原型链、prototype、__proto__的理解

PS:原型的概念还是很抽象,想要一次掌握还是很困难,需要不断复习,重复理解,加深印象。多看看不同人的讲解思路,每个人的思路都不同,可以从多维度的来理解! 我也来分享一下我对原型的理解。首先要知道js中有哪几种数据类型、知道原型的作用是什么、原型是如何在对象中存在的、原型如何使用。 JavaScript只有一种结构:对象 js中万物皆是对象。 出去五种基本类型以外的都是对象。 五种基本数据类型包括:String / Number / Boolean / underfine / null 剩下的Object /

qq_33290968的博客 1015
上一篇: ES6 的一些新特性
下一篇: call 和 apply 是用来做什么?
first_hands
博客等级 码龄4年 11粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值