JS中的prototype、__proto__、constructor、Object、Function

从一个例子理清JS中的prototype__proto__constructorObjectFunction的关系:

function Animal(){}

var anim = new Animal()



图片来源:http://www.blogjava.net/heavensay/archive/2013/10/20/405440.html

1. new出来的对象是普通对象,有__proto__属性,但没有prototype属性

2. anim的__proto__属性,指向它的类型Animal的prototype对象

3. Animal是函数对象(function Animal(){}相当于var Animal = new Function()),它有prototype、__proto__属性

4. Animal的__proto__属性指向它的类型Function的prototype对象

5. Animal的prototype(属性指向的)对象(普通对象),包含__proto__、constructor属性,其中constructor即其本身Animal,__proto__指向Object.prototype

6. Function自身是一个函数对象,其prototype和__proto__属性相等,都指向一个函数对象;但这个函数对象比较特殊,它没有prototype属性,其同样包含__proto__、constructor属性。其中constructor即其本身Function,__proto__指向Object.prototype

7. Object自身也是一个函数对象,其__proto__属性指向它的类型Function的prototype属性;它的prototype对象是一个普通对象,其中constructor即其本身Object,__proto__比较特殊是null

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容