//1.构造函数创建对象
// prototype 每个函数都有一个prototype属性
//函数的prototype属性指向一个对象,该对象为调用该构造函数而创建的实例的原型
//即:Person.prototype 为 person的原型
// 原型:每一个js对象( null除外) 在创建的时候都会与之关联另一个对象,这个对象就是原型,每个对象都会从原型上 “继承”属性
//每个对象(null除外)都具有一个__proto__属性,这个属性会指向该对象的原型
//每个原型都有一个constructor属性指向关联的构造函数
//获取对象的原型 Object.getPrototypeOf(obj)
//当读取实例的属性时,如果找不到,就会查找与之关联的原型的属性,如果还找不到,就会一直向上找原型,到最顶层的Object
function Person(){ } var person = new Person(); console.log(person.__proto__ === Person.prototype,person.__proto__,Person.prototype); console.log(Person,Person.prototype.constructor); console.log(Object.getPrototypeOf(person)); person.age = 18; person.name = 'Tutao'; console.log(person.name); console.log(Person.age);