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

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

function Animal(){}

var anim = new Animal()


JS中的prototype、__proto__、constructor、Object、Function_第1张图片


JS中的prototype、__proto__、constructor、Object、Function_第2张图片
图片来源: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

你可能感兴趣的:(JS中的prototype、__proto__、constructor、Object、Function)