原型与原型链学习笔记

1、对象都是由函数创建出来的

例如:var a= new Object();var b=new Function();var c=new Array();像这些ObjectFunctionArray都是函数。
在实际工作中我们是这样写的var a={};var b=function(){};var c=[];;这两者本质上是没有任何区别的,后者只是一种快捷方式,在编程语言中,一般叫做“语法糖”。

2、函数也是对象(鸡生蛋还是蛋生鸡的问题了)

函数也是对象,并且有一个默认的属性prototype
看下图:

Paste_Image.png

我们创建了一个superType函数,可以看到superType.prototype也是一个对象:

superType.prototype={
    constructor:function(),
    __proto__:Object
}

这个对象有两个属性,其中constructor指向一个函数,这个函数即是superType。

Paste_Image.png

另外一个属性__proto__的值则是一个对象。

3、每个函数function都有一个prototype,即原型;每个对象都有一个__proto__

每个对象的__proto__都指向创建该对象的函数——的prototype。

一步一步来:

  1. 创建该对象的函数:可以是ArrayObjectFucntion 或者自定义的函数.
  2. 上一步函数的prototype

4、 Object.prototype__proto__指向null

这个对象(Object.prototype)的__proto__属性是个特例。否则的话就就无休止了。

结合上面几点来理解下面这张图片

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容