__proto__(隐式原型)与prototype(显式原型)

用Python实现古诗词填字游戏(三) 古诗词做填字游戏的第三部分代码,也是最核心的部分。实现对诗文和关键字的选定,并确定文字的输出位置。 阅读详情

题外话:先用构造函数构造一个实例对象

var log=console.log.bind(console)
function Person(){ //创建一个构造函数

}

var person1=new Person() //构造一个实例对象person1

person1.name='张三'

log(person1.name)//张三


// 每个函数都有一个prototype属性,这是函数特有的属性

Person.prototype.name='李四'

var person2=new Person()

log(person2.name)//李四

这个prototype就等于创建实例对象的原型也就是person1和person2的属性__proto__

每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__,这个属性会指向该对象的原型。

log(person1.__proto__===Person.prototype)//true
log(person2.__proto__===Person.prototype)//true

 

 

 

 

再看几个公式:

var 对象 = new 函数()
对象.__proto__ === 对象的构造函数.prototype

// 推论
var number = new Number()
number.__proto__ = Number.prototype


var object = new Object()
object.__proto__ = Object.prototype


var function = new Function()
function.__proto__ = Function.prototype

// 另外,所有函数都是由 Function 构造出来的,所以
Number.__proto__ = Function.prototype // 因为 Number 是函数,是 Function 的实例
Object.__proto__ = Function.prototype // 因为 Object 是函数,是 Function 的实例
Function.__proto__ == Function.prototye // 因为 Function 是函数,是 Function 的实例!

__proto__(隐式原型)与prototype(显式原型)的定义:

prototype:一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向以当前函数作为构造函数构造出来的对象的原型对象。

__proto:__是每个对象都有的一个属性

区别:

__proto__是每个对象都有的一个属性,而prototype是函数才会有(函数也有__proto__)的属性。

 

__proto__指向的是当前对象的原型对象,而prototype指向它的构造函数的原型对象。
 

作用:

1、肯定是为了继承!

 

2、prototype用来实现基于原型的继承与属性的共享。

 

3、__proto__就构成了我们常说的原型链,同样用于实现基于原型的继承。

 

关系:

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

举个例子:

Person.prototype.name='李四'

var person2=new Person()

log(person2.name) //李四

person2.name='张三'

log(person2.name)//张三

delete person2.name

log(person2.name) //李四

如何原型上没有定义name属性呢,是不是就找不到了?

当然不是,因为原型也是一个对象,既然是对象就按对象分方式来查找。

 

请看:

1、f1和f2这两个对象的属性__proto__,指向构造函数(Foo)的原型对象(当前对象的原型对象)。

 

2、构造函数Foo()原型属性Foo.prototype指向了原型对象(prototype指向它的构造函数的原型对象)。

其它:

1、原型对象的__proto__指向它的构造函数的原型对象。

2、原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

// constructor

log(Person===person1.constructor)//true
log(Person===person2.constructor)//true

注意:上面的代码中person1和person2均没有constructor属性,它们会去Person的prototype上去找

log(Person.prototype.constructor===person2.constructor)//true

3、Object.prototype的__proto__属性指向null。

 

微信支付接口「系统繁忙 SYSTEM_ERROR」/「文件不存在」报错分析与解决方案 接口开发实现SDK 微信支付的“平台证书模式”只有5年的有效期,过期后微信支付将不再签发新的平台证书,转而要求开发者使用“微信支付公钥”来处理敏感信息加密及回调签名验证。然而,由于以下几点原因,许多开发者在调用 获取平台证书。尽管微信支付在技术迭代上有其必要性,但报错设计过于不友好。诸如“系统繁忙”这样的提示很难直接关联到平台证书失效或公钥切换问题。这样的信息表达,开发者不仅看不懂,还需要花费大量时间分析排查,非常影响效率。 阅读详情

相关推荐

机器视觉最全面试题总结

空洞卷积(Atrous Convolution)也叫做膨胀卷积、扩张卷积,最初的提出是为了解决图像分割在用下采样(池化、卷积)增加感受野时带来的特征图缩小,后再上采样回去时造成的精度上的损失。空洞卷积通过引入了一个扩张率的超参数,该参数定义了卷积核处理数据时各值的间距。可以在增加感受野的同时保持特征图的尺寸不变,从而代替下采样和上采样a. 是普通的卷积过程(dilation rate = 1),卷积后的感受野为3b. 是dilation rate = 2的空洞卷积,卷积后的感受野为5。

@bangbang的博客 9206

js中的显式原型和隐式原型

显式原型:prototype 隐式原型:__ proto__ 1.显式原型和隐式原型是什么? 在js中万物皆对象,方法(Function)是对象,方法的原型(Function.prototype)是对象,对象具有属性(__ proto__)称为隐式原型,对象的隐式原型指向构造该对象的构造函数的显式原型 (prototype)。 方法(Function)是一个特殊的对象,除了和其他对象一样具有__p...

qq_44732010的博客 4517

LVGL仪表盘实战:5分钟用lv_meter打造汽车仪表UI(附完整代码)

本文详细介绍了如何使用LVGL的lv_meter组件在5分钟内构建专业汽车仪表盘UI。从环境配置、刻度定制到指针动画和性能优化,提供完整代码示例和实战技巧,帮助开发者快速实现嵌入式设备上的高效仪表盘设计。

k5l6m的博客 421

03JS高级-原型与原型链

一、原型(prototype) <!-- 1. 函数的prototype属性(图) * 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象) * 原型对象中有一个属性constructor, 它指向函数对象 2. 给原型对象添加属性(一般都是方法) * 作用: 函数的所有实例对象自动拥有原型中的属性(方法) --> <script type="text/javascript"> // 每个函数都有一个prototype

前端菜菜DayDayUp的博客 335

Python《打砖块》小游戏

Python《打砖块》小游戏!

PanDaoxi 1274

【YOLOv8改进[Conv]】使用OREPA助力V8更优秀

使用OREPA助力V8更优秀,降低训练成本,在不引入任何推理时间成本的情况下提高深度模型的性能。

静谧、淡雅 1917

原型(显式,隐式)

原型 1.函数的prototype属性 每个函数都有一个prototype属性,它默认指向一个空object对象,(即称为:原型对象) 原型对象中有一个属性constructer,它指向函数对象 2.给原型对象添加属性(一般都是方法) 作用:函数的所有实例对象自动拥有原型的属性(方法) 显式原型和隐式原型 1.每个函数function都有一个prototype,即显示原型(属性) 2.每个实例...

qq_40052011的博客 475

对称式目镜设计实例

对称式目镜设计实例

weixin_72050316的博客 1163

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

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

蓝桉 1413

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

Robot_PLC_HMI_Automation 6099

无源元器件-电容选型参数总结

电容选型时,需要考虑的参数多种多样,这些参数的选择会直接影响到电路的性能、稳定性、成本等多个方面。本文对电阻电容磁珠电感的参数进行详细介绍并总结。

fydar的博客 835

JavaScript中的显式原型与隐式原型:深入理解原型链

JavaScript原型系统包含显式原型(prototype)和隐式原型(proto)两个核心概念。显式原型是函数特有的属性,用于存储共享方法;隐式原型则是对象内部指向构造原型的链接。

2301_81137804的博客 855

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Js中prototype、[[prototype]]和__proto__的区别和用法

一.显式原型&amp;amp;隐式原型 显式原型:prototype 隐式原型:__proto__ 1.1 Important __proto__是每个对象都具有的属性 prototype是Function独有的属性 1.2 Tips 对象的隐式原型的值为其对应构造函数的显式原型的值 fn.__proto__ === Function.prototype 函数的prototype属性是定义...

qq_38722097的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

prototype 与 _proto_ 的区别

__proto__(隐式原型)与prototype(显式原型) 1. 是什么? 显式原型explicit prototype property: 每一个函数在创建之后都会有一个prototype的属性,这个属性指向函数端的原型对象 ps:通过Function.prototype.bind方法构造出来的函数是个例外,它没有prototype属性。 隐式原型 implicit prototype link: JavaScript中任意对象都有一个内置属性[[pr...

weixin_60684791的博客 3543

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript高级(四)显式原型和隐式原型

什么是显示原型? 什么是隐式原型? 什么拥有隐式对象? 实例对象分为几类? 函数是实例对象吗? 使两个引用变量指向同一个对象的方法 隐式原型属性__proto__时什么时候产生的**?

lyx9611的博客 582

JS高级之显式原型和隐式原型

显式原型和隐式原型 每个函数function都有一个prototype,即显式原型(属性) 每个实例对象都有一个__proto__,可称为隐式原型(属性) 例子: 对象的隐式原型的值为其对应构造函数的显式原型的值 例子: 内存结构 例子: 图: 总结: 函数的prototype属性:在定义函数时自动添加的,默认值是一个空Object对象 对象的__proto__属性: 创建对象时自动添加的,默认值是构造函数的prototype属性值 程序员能直接操作显式原型,但不能直接操作隐式原型

qiuqiudongdong的博客 429

js中__proto__和prototype的区别和关系?

正好这段时间在重新看这部分,写一篇回答来梳理一下吧。 proto(隐式原型)与prototype(显式原型) 1.是什么显式原型 explicit prototype property:每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象。Note:通过Function.prototype.bind方法构造出来的函数是个例外,它没有prototype属性。(感谢...

独步的博客 1185

JavaScript中的显式原型(属性)和隐式原型(属性)

JavaScript中的显式原型(属性)和隐式原型(属性) prototype和__proto__的区别与联系 实例对象的隐式原型__proto__等于构造函数的显式原型prototype prototype和__proto__都是引用变量属性,是一个地址值。 图解如下: ...

weixin_45664402的博客 621

JS原型与原型链(面试题)

原型 原型分为两种 prototype 每一个函数都会有prototype属性,被称为显式原型。 __proto__ 每一个实例对象都会有__proto__属性,其被称为隐式原型。 constructor 每一个prototype原型上都会有一个constructor属性,指向它关联的构造函数。 原型链 获取对象时,如果这个对象身上本身没有这个属性时,它就会去他的原型__proto__上去找,如果还找不到,就去原型的原型上去找…一直找到最顶层(Object.prototype)为止,Ob

好好学习,天天向上! 6266

显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链

 显式原型与隐式原型显式原型:prototype 隐式原型:__proto__在js中万物皆对象,方法(Function)是对象,方法的原型(Function.prototype)是对象,对象具有属性(__proto__)称为隐式原型,对象的隐式原型指向构造该对象的构造函数的显式原型。    构造函数的显示原型的隐式原型:内建对象(built-in object):比如Array(),Array....

薛跳跳的博客 3214

JavaScript中_proto_和prototype的区别和关系?

_proto_(隐式原型)与prototype(显式原型) 1.是什么 显式原型 explicit prototype property: 每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象。 Note:通过Function.prototype.bind方法构造出来的函数是个例外,它没有prototype属性。 NOTE Function o

梦颖飞燕--博客 459

JavaScript中显式原型和隐式原型的联系

显式原型:prototype 隐式原型:__proto__ 1.显式原型和隐式原型是什么? 在js中万物皆对象,方法(Function)是对象,方法的原型(Function.prototype)是对象,对象具有属性(__proto__)称为隐式原型,对象的隐式原型指向构造该对象的构造函数的显式原型。 方法(Function)是一个特殊的对象,除了和其他对象一样具有__proto__属性...

weixin_30731287的博客 205

prototype和__proto__区别

prototype和__proto__分别是显式原型和隐式原型,直接上代码吧: function person(){ this.age = 12; } person.prototype; //Object let person1 = new person(); person1.__proto__; // Object person1.__proto__ === ...

anshaobiao6449的博客 80

JavaScript 隐式原型(_proto_)与显示原型(prototype)

作者:苏墨橘链接:https://www.zhihu.com/question/34183746/answer/59043879来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 正好这段时间在重新看这部分,写一篇回答来梳理一下吧。 __proto__(隐式原型)与prototype(显式原型) 1.是什么 显式原型 explicit protot...

weixin_30909575的博客 151
上一篇: 深入理解 JavaScript 中的函数
下一篇: 《AngularJS》——scope的三种绑定策略
composurext
博客等级 码龄10年 15粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值