javascript原型——__proto_和prototype

web渗透学习手册 依据多年的渗透测试项目经验及个人理解,对漏洞分类 阅读详情

原型,原型对象,__proto__,prototype这些概念,好烧脑,不过且看慢慢来

原型原型链,原型对象研究

首先,正规的,我们创建个构造函数看看

打印看看:

person是一个对象,这个对象中只有一个属性,就是__proto__。由此可以知道,构造函数创建对象,会直接给实例加一个__proto__属性。这个属性里面有两个属性,constructor指向构造函数,看到了吧。__proto__里还有一个__proto__。这是怎么来的呢?其实再ECMAScript第5版中,管这个指针叫[[Prototype]],只是没有标准访问,所以在Firefox、Safari和chrome都支持这个__proto__属性

明确一下:我们的每个函数都有一个prototype属性,这个呢就是我们说的原型,这个属性就是一个指针,指向一个对象,这个对象就是原型对象,这个对象是干嘛使呢,就是包含共享的属性和方法,就比如上面的Person。他想要他的子子孙孙都有某个特性,就可以在原型上创建。

prototype是函数特有的属性!!!

我们来看看,在原型上添加属性和方法:

结果:

由上诉现象我们可以知道两个点: 1、原型创建的属性和方法,对于其构造函数创建的新对象,具有相同的属性和方法,共享。2、不管创建实例的先后,原型上的属性和方法都会反映在上面,就像上面的person实在原型添加属性和方法之前创建,但是仍然具有共享的属性和方法。

找共同点了找共同点了,竟然一模一样,那来判断一下。

发现了奥秘所在了没有,实例对象里面有个属性__proto__就是保存的和构造函数的prototype对象一样的对象指针。就是指向同一个对象。这句话严格,不是长得一样就是一个对象了,我们来验证一下:

一个赋值操作,完全反应了再了原型上,所以,他们都指向的是一个共同对象。that's all

这个图也很好的说明了上诉的结论,而且还有一点就是。Person 的原型中,constructor属性就指向Person。

辨别原型:

alert(Person.prototype.isPrototypeOf(person1)); //true 
alert(Person.prototype.isPrototypeOf(person)); //true 

Object.getPrototypeOf()返回对象的原型,IE9+

使用hasOwnProperty()方法来检测一个属性是否存在于实例中,而不是原型中。

 

扩展一下:

对于Object,肯定也是一个构造函数,既然是构造函数,那么就有原型

也就是说,Object.prototype也就是原型链的终点了。

好不好奇Function这个神奇的东西:

1、首先函数作为一个对象,肯定有__proto__属性,Object、Array等都一样,原型都是Function.prototype

2、函数作为函数,有独特的prototype属性,对应于'function () {}'对象

3、Function.__proto__ === Function.prototype === Object.__proto__

4、Function原型的__proto__属性就是'Object {}'

原型链就是这样一层一层链接起来,对象有原型,对象的原型又有原型,一直向上。

总结:

1、只有函数有特有属性prototype,一个函数使用new关键字,那就是构造函数。

2、对象实例__proto__保存的是和构造函数prototype同样的对象。

 

乐企增值税及附加税费(一般纳税人适用)申报表填报能力说明文档V3.009 申报表填报,是指企业在自有业务系统中将算税结果数据按预填规则要求加工汇总后,进行申报表填报的过程。申报表填报前对纳税申报所需的前提条件进行校验。校验通过后,应用前序算税结果数据及预填规则进行纳税申报表预填,生成申报表数据。申报表数据通过申报业务规则校验后,经纳税人确认即完成申报表填报业务。 阅读详情

相关推荐

Tribon Vitesse开发教程(一)

Tribon Vitesse简介 Tribon Vitesse是Tribon提供给Python编程语言的编程接口,它是一系列的API。使用Python的语法调用这些API,结合Python语言自身的语法生成的程序叫做Vitesse程序。Vitesse是法语“速度”的意思,读作“为戴斯”。使用Tribon Vitesse可以直接访问Tribon产品信息模型和使用Tribon应用程序的功能,以控制设计

forevermemory的专栏 2589

走一遍流程图,了解 [[prototype]]、__proto__、prototype究竟是什么

大纲 [[prototype]]、proto、prototype究竟是什么。遍走这个经典的流程图,遍解释它们的含义。 写在最前面 原型链的尽头(root)是Object.prototype。所有对象均从Object.prototype继承属性。 prototype 每个函数都有prototype属性(图一:1),也只有函数才有prototype属性。除了 Function.prototype...

weixin_33813128的博客 1064

抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)

什么都别说,先看效果: 字节跳动也开放了小程序给商家接入,可以在旗下APP如抖音、今日头条、今日头条极速版等应用中即点即用,基于庞大的数亿用户量为其引流,帮助商家获取用户流量,销售商品,其模式和微信小程序差不多。 1、后台管理地址: https://developer.toutiao.com/ 2、开发文档地址: https://developer.toutiao.com/dev/cn/min...

悟空码字的博客 1万+

【Javascript】ES5原型链中prototype、__proto__和 [[Prototype]]

以下面这段代码为例,分析ES5原型链中的一些问题 var A = function(name) { this.name=name }; A.prototype.n = 1; var b = new A("tom"); A.prototype = { n: 2, m: 3 }//把A的原型对象用一个object覆盖(即function Object()的实例对象) // b.__proto__ = A.prototype//修改b的原型 // A.prototype.constructor=A

qq_44870156的博客 1186

Android GWP-Asan机制详解

基本用途:GWP-ASan是一种原生内存分配器功能,在内存分配时额外记录一些信息,用于检测DOUBLE_FREE、USE_AFTER_FREE、INVALID_FREE、BUFFER_OVERFLOW、BUFFER_UNDERFLOW五种内存错误问题。

专注于系统快稳省领域 4143

WebUI自动化测试框架搭建(python+pytest+selenium+allure)

将鼠标移动到要定位的元素上面>右键>点击“检查”>在元素代码上右键>复制>复制XPath。

m0_63729339的博客 1281

Function,Object,__proto__,prototype

原文链接:https://juejin.cn/post/6844903930216841230#comment 彻底搞懂Function,Object,proto,prototype之间的关系 写在开篇之前:记录学习点滴,如有错误与补充,希望大家积极指正。 有4个规则一定要记住,如下 javascript中一切皆对象,函数也属于对象。 所有对象都含有__proto__。 只有函数才有prototype。 所有函数的默认原型都是Object的实例。 我们来看一下demo var o = {}; o.__pro

小嘟的博客 744

架构设计之架构治理

架构治理的本质是“用规则约束复杂性,用流程保障落地,用数据驱动优化”先定目标:明确量化的治理目标,避免盲目行动;立标准:建立覆盖分层、选型、接口、拆分的统一规范,奠定治理基础;强评审:通过架构评审把控设计环节,提前规避风险;全流程:将治理规则贯穿设计、开发、测试、部署、运维全生命周期;重保障:通过组织、流程、工具确保治理落地,而非“纸上谈兵”;持续迭代:随业务与技术演进优化治理规则,避免“一劳永逸”。

xiaolyuh的专栏 810

对象的isPrototypeOf和Object.getPrototypeOf及如何判断一个对象是普通对象

一、如何判断一个对象是普通对象 在研究react-redux和redux源码时,出现一个判断对象是普通对象方法isPlainObject function isPlainObject(obj) { if (typeof obj !== 'object' || obj === null) return false let proto = Object.getPrototypeOf(o...

wangyuegyq的博客 1257

INCA ProF文件解析

本博文从实际应用出发,介绍INCA prof文件的关键信息,通过实例,描述当得到一个刷写需求后,如何在不改变用户之前的使用习惯的前提下,满足原有的INCA刷写应用数据和标定程序的需求。 声明:本文不涉及项目名称,没有商业目的,纯属分享技术,乐享知识。

汽车电子软件领域知识分享 1万+

10、使用Ray Serve实现微服务与模型部署

本文深入介绍了如何使用Ray Serve实现微服务与机器学习模型的高效部署。从基础的部署定义到复杂的模型服务场景,涵盖部署架构、HTTP与Python调用、资源配置、FastAPI集成、金丝雀发布策略及实际应用流程。文章还探讨了模型服务的关键需求如灵活性、批处理、硬件优化和可扩展性,并展示了Ray Serve如何满足这些要求。最后提供了常见问题解决方案与未来发展方向,帮助开发者构建高性能、易维护的模型服务平台。

blue42的博客 174

深入探讨javascript中对象,原型(__proto__),与prototype的关系

最近在学习node.js,学习过程中遇到很多坑,总结下来是对核心javascript(新手童鞋别误解,这里说的不是客户端javascript哦。两者有相似性,侧重点不同)的相关知识认识相对浅薄导致,所以再次捡起犀牛书(javascript权威指南)啃相关原理。犀牛书确实是一部经典,每次翻阅,对javascript的认识都能上升一个层次,对于有志于从事javascript工作的童鞋,建议多翻翻,如果想

2596

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 303

JavaScript原型链终极解析:彻底搞懂prototype和__proto__的区别

JavaScript原型链终极解析:彻底搞懂prototype和__proto__的区别

先做,然后做对,最后做得更好。学习就是为了自由呀,当你学会了怎么学习,想要学什么就学什么,需要什么就学什么,你就自由了。 4769

VC中sqlite的使用

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

从__proto__和prototype来深入理解JS对象和原型链

从__proto__和prototype来深入理解JS对象和原型链 就标题而言,这是七八篇里起得最满意的,高大上,即使外行人也会不明觉厉! ???? 不过不是开玩笑,本文的确打算从__proto__和prototype这两个容易混淆来理解JS的终极命题之一:对象与原型链。 __proto__和prototype __proto__ 引用《JavaScript权威指南》的一段描述: Every JavaScript object has a second JavaScript object (or null

GHkmmm的个人博客 219

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

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

【JS】原型链:__proto__和prototype解析

围绕一个典例展开对JS原型链的理解和阐述

weixin_57208584的博客 1498

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JS之原型链,__proto__和prototype

对于刚刚接触JS的人来说,JS的原型链是有点不容易理解。但是,它绝对没有那么复杂。 一.首先我们需要来认识一下,__proto__和prototype 1. __proto__叫做隐式原型    在JS中,每个对象都会有一个内置属性:[[prototype]],目前所有的浏览器都可以通过__proto__属性来访问这个内置属性。但是这并不是一个正式的API,在ES6中,Object.setP...

woke的博客 642

JS 中 prototype、__proto__、原型链和原型链终极指向问题

先上一张概括图: 为了简介,原型上的constructor指向都没有画出。 原型链 创建的每一个函数都有一个 prototype 属性,为一个指针,指向一个对象。在原型对象上有所有实例共享的一些属性和方法; 原型对象上有一个属性 constructor 指向其构造函数; 利用构造函数创建的每个实例都包含一个指针[[Prototype]] 指向构造函数的原型对象,一些浏览器支持属性 __proto__ 来访问。 当这个原型对象是另一个类型的实例时就是原型链。如上图中 Number继承F.

hexiyuanhecy的博客 2135

JavaScript 原型与原型链:深入理解 __proto__ 和 prototype 的由来与关系

JavaScript 没有类,而是通过构造函数和原型模拟类的行为。prototype是函数特有的属性,用于定义共享的属性和方法。__proto__是对象特有的属性,用于构建原型链。原型链是 JavaScript 实现继承的机制,通过__proto__向上查找属性和方法。new关键字通过构造函数创建对象,并建立原型链关系。理解原型和原型链是掌握 JavaScript 面向对象编程的关键。虽然 ES6 引入了class语法,但其底层仍然是基于原型的实现。

小白的博客 810

JS中__proto__和prototype都是什么?原型链继承解读

首先要知道,prototype是函数才有的属性,__proto__是每个对象都有的属性 随后,先谈一下 1.什么是prototype? prototype对象是JS实现面向对象的一个重要机制。 在很早以前,js中是没有class这个概念的(现在js中的class是函数的语法糖) 每个函数就是一个对象(Function类型),函数对象都有一个子对象 prototype对象,在创建这个函数对象的时候,prototype会自动成为这个对象的成员。 prototype表示该函数的原型,也表示一个类的成员的集合,简称

qq_30675607的博客 2231

[JS]JS对象的内部原型(__proto__)和构造器的原型(prototype)

prototype和__proto__的概念 prototype是每个函数对象的一个属性,这个属性是一个指针,指向一个对象。它是显示修改对象的原型的属性,当然它的作用也是显示修改对象的原型的属性。 __proto__是每个对象拥有的内置属性,包含对指定对象的内部原型的引用,是JS内部使用寻找原型链的属性。__proto__属性可以用来设置对象的原型。由于对象只能有一个原型,所以使用__prot

超越 2710

JavaScript中的原型prototype和__proto__的区别及原型链概念

问题 初学js的同学,总是搞不清楚js中的原型是什么东西,看着控制台打印出来的一串串__proto__,迷惑不已。 例如我定义一个Person,创建一个实例p,并打印实例。 function Person(){} var p = new Person(); console.log(p) 图中,打印出来一个Person的实例对象p, 这个对象有个__proto__ 属性,这个是什么东西? __p...

烟雨星空的博客 786

js的proto和prototype原型对象理解

原型链以及原型对象的理解

Wujunbin952的博客 1441

js原型链中的__proto__和prototype区别与联系

function Persion() { } let person1 = new Persion(); __proto__和prototype的关系如上图所示,如果明白这两则关系的话这个图是很清晰易见的,看不懂的话可以继续往下看 首先需要明确的一点是,JS中除了一些基本数据类型外其他的都是对象,既然都是对象那么在继承关系或者实例关系中就会存在共享属性(公共区)的概念 在其他语言中存在class类的概念,那么公共区的引用由类来指向没什么问题,但js中没有类的概念(es6后的class本质是语法糖),在j

qhlpptdyfn的博客 274

JS高级使用4.0——原型链、显式原型prototype和隐式原型__proto__

在每个函数上都有一个prototype属性,默认指向一个空的对象,而这个对象我们就称为原型对象。原型对象上有一个,指向函数对象。显式原型程序猿可操作。// 验证constructor是不是指向函数对象上图验证了我们最开始说的两个结论,先不要着急去研究constructor中的哪个prototype是啥,这是原型链的知识,我们先看prototype哈。当我们访问一个对象的属性时,如果本身上没有这个属性,会在__proto__这条链上面寻找,如果能找到就返回,找不到就返回undefined,而。

蓝桉 1413

JS原型链中 _proto_和prototype及constructor的关系

总结: 1、对象有属性_proto_,指向prototype。a. 对象的_proto_指向其构造方法的原型对象。b. 原型对象的_proto_指向上一级原型对象。c. 2、方法除了有_proto_,还有属性prototype,指向该方法的原型对象。 3、每个对象都有constructor指针,a. 指向创建该对象实例的构造函数。b. 原型对象指向对应的构造函数

u010267996的博客 974
上一篇: javascript中的this
下一篇: 工作资源
雨中畅游
博客等级 码龄10年 100粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值