
JavaScript中任何一个函数都可以作为构造函数,只要通过new关键字调用,任何一个函数创建后,JavaScript框架会为这个函数创建一个prototype属性,在这个prototype上定义的属性和方法在所有通过prototype所在的函数创建的对象之间共享,构造函数A实例化出的对象a又会被JavaScript框架创建一个__proto__属性,a._proto_ == A.prototype, 方便确定对象是哪个函数实例化出来的。在调用某个对象的属性或函数时,现在对象所对应的构造函数C自身的定义上查找,如果找到就执行,如果没有找到,就去这个对象的__proto__属性上查找,也就是C的prototype上查找, 如果找到了就执行,如果没有找到,因为C.prototype本身也是一个对象,这个对象是由Object创建的,C.prototype._proto_ == Object.prototype, 所以在Object.prototype上查找,如果找到了就执行,如果还是没有找到同样由于Object.prototype也是一个对象,它也有__proto__属性,其值为null , 所以不可能在查找到值了,直接返回null。