1. 普通对象、函数对象、原型对象、构造函数(构造器)、原型链
JavaScript中,分为普通对象和函数对象,Object、Function、Number、Boolean、String、Array、RegExp、Error是JS自带的8个函数对象。凡是通过new Funciton()创建的对象都是函数对象。
每个函数对象都有一个prototype属性,这个属性指向函数的原型对象(函数对象才有prototype属性),其实原型对象也是普通对象【但 Function.prototype 除外,它是函数对象,但它很特殊,他没有prototype属性,而且是个空函数(函数对象都有prototype属性)】;在默认情况下,所有的原型对象都会自动获得一个构造器(constructor)属性,这个属性指向prototype属性所在的对象(函数),即:Person.prototype.constructor == Person。普通对象(实例)的构造函数属性(constructor)指向构造函数,即person1.constructor =Person;
所有对象(包括函数)的构造器属性(constructor)指向构造器。
JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__ 的内置属性,用于指向创建它的构造器的原型对象。原型链__proto__存在于实例和构造器的原型对象之间,而不是