原型的理解:
1.万物皆对象,每一个对象都有对应的__proto__属性,指向创造该对象的构造函数的原型对象prototype
function A() {}
var a = new A()
a.__proto__ === A.prototype
2.js有两个顶级函数Function和Object
所有的函数都是由Function创造
所有的对象都是由Object创造
a).所有的函数都是由Function创造,所以A的属性__proto__指向的是Function的原型对象prototype
A.__proto__ === Function.prototype
b).所有的函数都是由Function创造,包括其自身
Function.__proto__ === Function.prototype
c).所有的函数都是由Function创造,Object也是顶级函数,也是函数
Object.__proto__ === Function.prototype
d).所有对象都算是由Object创造,所以A的原型对象prototype上的对象属性__proto__指向的是Object的prototype
A.prototype.__proto__ === Object.prototype
e).Object.prototype也是对象,被谁创建的呢,null
Object.prototype.__proto__ === null
原型链的理解
是一种访问机制
1.在访问对象的某一成员时,会先在该对象中寻找是否存在
2.如果不存在,就去该对象所在构造函数的原型对象prototype中寻找
3.如果还没有找到,就去该原型对象的原型上找
4.直到Object上的原型对象的原型 是null为止