原型有一个非常重要的属性叫 prototype

一、先写一个简单的例子,看看 A的原型和A的实例 分别是什么

function A() {}
var a = new A()
console.log(a,'实例')
console.log(A.prototype,'原型对象')

控制台输出后发现,两个都是对象

区别   1.实例对象里面有一个灰色的 <prototype>(隐式原型,可通过__proto__拿到)

     2.原型对象里面多一个constructor属性,这个属性指向我们的构造器 function A()。   也就是 A.prototype.constructor = A

constructor的定义constructor 属性返回对创建此对象的数组函数的引用。

简单来说:数组实例的 constructor 等于 Array

     对象实例的 constructor 等于Object

      构造函数A的 constructor  等于 Function

由上面的 A.prototype.constructor = Aconstructor 的定义,我们可以推论出

A.prototype 是 A的一个实例

但是 A.prototype.__proto__ === Obeject.__proto__

二、再看看 实例的__proto__是什么,它和实例、原型对象的关系

function A() {}
var a = new A() console.log(a,'实例')
console.log(a.__proto__,'实例__proto__')
console.log(A.prototype,'原型对象')

结果

我们可以发现

1.a实例的 <prototype>果然用 a.__proto__拿的到

2.a.__proto__等于A.prototype

由此,我们能得出结论  实例的隐式原型等于 构造函数的 显式原型

a.__proto__ ===  A.prototype

三、原型链

仔细的同学会发现,a实例没有 constructor属性,那 a.constructor === A 吗?

当然是等于的

a没有constructor,它就会顺着原型 往上面找,于是找到 a.__proto__

a.__proto__(也就是 A.prototype)是有 constructor的

所以结论是

a.__proto__.constructor === A

A.prototype.constructor === A

最新文章

  1. 了解Package Configurations
  2. 【C语言】C语言标识符
  3. Windows Azure 虚拟机的IP地址操作
  4. [EWS]在exchange中的标识符
  5. SVN的文件夹链接(目录链接,目录映射,svn:externals)
  6. dedecms 分页样式
  7. ASP.NET服务器控件OnClientClick事件中Eval()作为js方法的参数的一种写法
  8. html5中的一些小知识点(CSS)
  9. 通用线程:POSIX 线程详解,第 3 部分 条件互斥量(pthread_cond_t)
  10. Android开发周报:反编译对抗研究、动手制作智能镜子
  11. json转义字符串
  12. sui的一些方法封装
  13. 创建单页web app, 如何在chrome中隐藏工具栏 地址栏 标签栏?
  14. 【轉】JS,Jquery获取各种屏幕的宽度和高度
  15. Codeforces Round #129 (Div. 1)E. Little Elephant and Strings
  16. Shell 批量修改主机 用户密码
  17. [转帖]windows7/windows NT介绍
  18. python英文与中文的词频统计
  19. 浏览器和对象的dom属性
  20. 解决telnet不是内部命令

热门文章

  1. 对于CAN ID的理解
  2. P4178 Tree(点分治)
  3. centos下彻底删除mysql的方法
  4. echarts 折线图自定义颜色与修改legend颜色
  5. python timeit模块用法
  6. 基于jeesite的cms系统(三):使用RESTful API在前端渲染数据
  7. gantt project 使用
  8. Koa与Node.js开发实战(2)——使用Koa中间件获取响应时间(视频演示)
  9. linux下安装svn1.7
  10. 使用Sales_data类