看这篇文章之前请先看王福明的博客----
深入理解javascript原型和闭包(4)——隐式原型
最好是对照着看;;
先扯一段题外话:之前看前端的原型问题当时看着看着就默认了他的存在,过几天就忘了,其主要原因就是没有理解消化,今天再理一遍,顺便记录一下,分享一下,有用的话点个赞,没用勿喷。
对照看王福朋的博客:
先用我的理解解释名词:
__proto__ : 隐式原型 ----------“父亲”--称呼
prototype :原型 ----------角色 --你老爸相对你的角色
constructor :构造器 -----------父亲 --就是你老爸啦
---------------这里只是为了方便理解-----名词解释就不要过分纠结
先来个例子:
var A = function(){} -------------这是小明的爸爸大明
var B = new A(); -------------new了个小明
B.__proto__ ------------------------------>A.prototype
小明喊了声“爸爸”---------------------------->大明的的角色(说不定真实的父亲是隔壁老王)
B.__proto__ .constructor-------------------A
喊了“爸爸”然后就要找那个人了------------大明就是他的爸爸
A.prototype -------------------A.prototype
A.prototype.constructor---------------A----------A.prototype.constructor
A.prototype.constructor.prototype ---------------A.prototype
........
"爸爸"------------对应的人--------------大明
大明---------------对应的称呼-------------“”爸爸
理解一下要是不难理解继续往下看
第二张图:
Object.prototype确实一个特例——它的__proto__指向的是null,切记切记!
"父亲"的“父亲”的“父亲”。。。。。。------> 就叫始祖吧------null