__proto__(隐式原型)与prototype(显式原型)
每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象。
对象有隐性的_proto_,function有_proto_,还有prototype。

初学javascript的时候也跟题主一样搞不清楚,自己好好总结了一下:

首先,要明确几个点:
1.在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。
即:对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

2.方法(Function)
方法这个特殊的对象,除了和其他对象一样有上述_proto_属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

好啦,知道了这两个基本点,我们来看看上面这副图。
1.构造函数Foo()
构造函数的原型属性Foo.prototype指向了原型对象,在原型对象里有共有的方法,所有构造函数声明的实例(这里是f1,f2)都可以共享这个方法。

2.原型对象Foo.prototype
Foo.prototype保存着实例共享的方法,有一个指针constructor指回构造函数。

3.实例
f1和f2是Foo这个对象的两个实例,这两个对象也有属性__proto__,指向构造函数的原型对象,这样子就可以像上面1所说的访问原型对象的所有方法啦。

另外:
构造函数Foo()除了是方法,也是对象啊,它也有__proto__属性,指向谁呢?
指向它的构造函数的原型对象呗。函数的构造函数不就是Function嘛,因此这里的__proto__指向了Function.prototype。
其实除了Foo(),Function(), Object()也是一样的道理。

原型对象也是对象啊,它的__proto__属性,又指向谁呢?
同理,指向它的构造函数的原型对象呗。这里是Object.prototype.

最后,Object.prototype的__proto__属性指向null。

总结:
1.对象有属性__proto__,指向该对象的构造函数的原型对象。
2.方法除了有属性__proto__,还有属性prototype,prototype指向该方法的原型对象。

讲完啦,欢迎各种批评指正完善探讨,共同进步~

1. 默认情况下:

function Foo(){}
var foo = new Foo()
Foo.prototype.__proto__ === Object.prototype //true 理由同上

2. 其他情况:
(1)

 function Bar(){}
//这时我们想让Foo继承Bar
Foo.prototype = new Bar() Foo.prototype.__proto__ === Bar.prototype //true

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

转载于:https://www.cnblogs.com/dontes/p/7723690.html

__proto__和prototype 1相关推荐

  1. __proto__和prototype

    _proto_ 每个对象都有一个__proto__(前后各两个下划线)属性来标识自己所继承的原型对象.__proto__属性对性能影响非常严重,不建议使用. prototype 只有函数才有proto ...

  2. 再说javascript 的__proto__ 和prototype 属性

    过了一段时间,没写 原生的 javascript 的了,感觉天天在用框架写代码,框架写代码完全限定死了你所需要思考的东西,只是在处理一些业务逻辑,真正的代码 都感觉不会写了. 突然发现,框架用的不熟悉 ...

  3. __proto__ 和 prototype 到底有什么区别

    以前在日常工作中使用 JS 时只是粗浅的知道在原型链中会存在 __proto__ 和 prototype 这2个概念,但真正要回答这2个属性的具体作用以及之间的关系和差异时又总觉得不知道从哪里说起,今 ...

  4. JavaScript中__proto__与prototype的关系

    这里讨论下对象的内部原型(__proto__)和构造器的原型(prototype)的关系. 一.所有构造器/函数的__proto__都指向Function.prototype,它是一个空函数(Empt ...

  5. js(javascript)中__proto__和prototype解析

    为什么80%的码农都做不了架构师?>>>    __proto__是内部原型,prototype是构造器原型(构造器其实就是函数) 构造器的原型是一个对象 一.所有构造器/函数的__ ...

  6. JavaScript中__proto__、prototype和constructor的详细讲解【1】

    作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...

  7. 什么是__proto__和prototype

    先放张经典的图,或许在学习原型的路上你已经无数次看见这张图了,还是看不懂没有关系,先放这,看完此博客决定自己又行了就回来看这图 js实现继承的方式是原型链 原型链的定义: Javascript 对象有 ...

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

    首先要知道,prototype是函数才有的属性,__proto__是每个对象都有的属性 随后,先谈一下 1.什么是prototype? prototype对象是JS实现面向对象的一个重要机制. 在很早 ...

  9. JS面向对象,__proto__和prototype详解

    一.类,对象和原型 类是具体事物的抽象,而对象是类的实例.举个例子,学生类可以有nama属性,grade属性,study方法等等,而对于学生类的实例就具体到某一个学生上去了,如name:小红 grad ...

最新文章

  1. sqoop操作之HIVE导出到ORACLE
  2. 《企业软件交付:敏捷与高效管理精要》——1.5 对企业软件交付的需求是如何演变的呢...
  3. android handler.removeCallbacksAndMessages(null)的使用
  4. 适用于ELment-UI级联多选框,数据回填,根据子节点的值查找完整路径
  5. 人工智能与量子计算在有前途的新忆阻器中融合
  6. Xshell 鼠标选中 中断ctrl+c 问题
  7. linux 测试端口连通性_磨刀不误砍柴工,带你搞定云网络系统性能测试
  8. zlib、libzip、 libzippp 库编译(windows + cmake + vs2013)
  9. 模板 n维矩阵的二分幂
  10. Java-如何防范CSRF攻击
  11. 搞渗透!还不会信息收集的看这里(大佬的秘籍)
  12. 计算机的第一道安全防线是,网络安全的第一道防线是
  13. Kotlin 实战翻译 —— 仿微信图片选择开源库ImagePicker
  14. 【心理咨询师考试笔记】基础理论(五)——心理健康与常见精神障碍
  15. k8s查看集群信息及基本命令
  16. JavaScript制作的时钟
  17. 华科计算机博导刘云生论文,关于对博士学位论文进行盲审的通知
  18. 【EI会议】2022年人工智能与统计学前沿国际会议(CFAIS 2022)
  19. 计算两张图像之间的PSNR和SSIM值
  20. Antd Table 可编辑表格

热门文章

  1. 播放列表php代码,【求助】如何直接在Discuz! 代码 FLASH代码中添加优酷播放列表...
  2. 配置不成功_在windows下配置sendmail服务器
  3. java如何写ajax,java,jq,ajax写分页
  4. 2ask调制解调信噪比matlab实现,MATLAB模拟2ASK调制误码率与信噪比关系曲线的程序...
  5. python中向量长度_线性代数精华——矩阵的特征值与特征向量
  6. 3.7.2 - Escape Sequences
  7. OpenCV读图、展示和保存新图
  8. python快速求EXCEL数据权重
  9. 高光谱提取薯叶特征波长
  10. 【原始图像】对数及对比度扩展变换