function Person(){
}
Person.prototype.name = 'aaa';
Person.prototype.age = '12';
Person.prototype.class = '9';
Person.prototype.sayName = function(){
alert(this.name);
};
var person1=new Person();
//person1.sayName();
//alert(Person.prototype.constructor);//指向构造函数
//alert(person1.__proto__==Person.prototype);//创建的实例包含__proto__属性,并且指向构造函数的原型;
//当访问对象 person1.father的时候,因为没有实例上没有这个属性,会通过实例的__proto__寻找到构造函数的原型;
// 继承:function Teacher(){}
// Teacher.prototype = new Person();
// Teacher.prototype.constructor = Teacher;
//如果构造函数的原型上没有,就会向继承的父类寻找,如果继承是通过上面的方法实现的,就会寻找到父类的构造函数的prototype
// 直到 Object 的原型
person1.name='bbb';//掩盖掉原型的同名属性;
alert(person1.name);
/*delete person1.name;//删除实例属性之后,找到原型的属性,并且在实例中无法删除原型中的属性;
alert(person1.name);*/
alert(person1.hasOwnProperty('name'));//确定实例中是否有这个属性;返回true / false
alert('name' in person1);// 确定原型中是否有这个属性;