(1)原型
所有函数对象中都有一个名字叫prototype的引用类型变量,该引用类型变量指向一个空对象,这个空对象就是原型。
(2)原型链
1)Function会自动创建出来很多函数对象,Function自动创建的第一个函数对象是Object函数对象,除外还有Window、Date等一系列内置函数对象。
2)所有函数对象中都有一个名字叫prototype的引用类型变量,该引用类型变量是函数对象的成员,他的值是对应原型对象的引用值,即prototype指向原型对象。
3)所有原型对象中都有一个名为constructor的引用类型变量,该引用类型变量是原型对象的成员,他的值是对应的是函数对象的引用值,即constructor指向函数对象。
4)实例对象是被对应的函数对象创建的。
5)所有对象中都有一个名为__proto__的引用类型变量,该引用类型变量是对象的成员。
a、Function函数对象中的__proto__指向Function原型对象。
b、Object原型对象中的__proto__是null。
c、除Function函数对象和Object原型对象之外,对象中__proto__都是谁创建__proto__所属对象,就指向谁的原型对象。
(3)原型链中对象访问成员的过程:
1)当前对象中如果有该成员就找到该成员,访问结束。
2)当前对象中如果没有该成员,则到__proto__指向的对象中找成员,找到就结束访问。
3)当前对象中如果没有该成员,则继续到到__proto__指向的对象中找成员,找到就结束访问。
(4)原型链总结
Object原型对象的成员,可以被所有对象访问。Object是原型链的尽头。Object原型对象通过Object.prototype得到。