关于原型和隐式原型写个笔记

创建一个函数  function f1(){

  //。。。。。

首先每个函数f1都有一个自带的原型属性prototype,这个原型又是一个对象 , 他有自己一个唯一的constructor的属性指向自身,当然也可以定义很多原型属性用来写插件之类,这句话相对下面的每个prototype

其次每个函数f1还有一个自带的隐式原型属性__proto__   这个也是一个对象,他继承于创建这个函数的原型,既Function.prototype, f1.__proto===Function.prototype,

当然函数f1自带的原型prototype自己也有一个__proto__的属性,指向Object.prototype,  f1.prototype.__proto__===Object.prototype,

当然构造函数Object的prototype也有一个__proto__属性指向谁呢?null

然后Function也有一个__proto__的属性,它指向谁呢?它指向他自身的prototype  很叼吧    循环来的

这样看来大概就清楚一点了,首先自定义对象都是被Object创建的  不过相对于直接创建自定义函数少了一个Function的步骤  所以如果是自定义一个对象的话

var f2={...  }       f1.__proto__===Object.prototype, 

函数的话f1.__proto__===Function.prototype,      Function.prototype.__proto__===Object.prototype,

全文都围绕一句话来表达:对象的__proto__指向的是创建它的函数的prototype

猜你喜欢

转载自www.cnblogs.com/heresy/p/9092793.html