// 每一个构造函数都有一个属性 原型 / 原型对象
function Student(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
// this.sayHi = function () {
// console.log('test');
// }
}
Student.prototype.sayHi = function () {
console.log('大家好,我是' + this.name);
}
// 通过Student构造函数,创建的对象,可以访问Student.prototype中的成员
var s1 = new Student('lilei', 18, '男');
var s2 = new Student('hmm', 18, '女');
s1.sayHi();
console.dir(s1);
// 当调用对象的属性或者方法的时候,先去找对象本身的属性/方法 ,如果对象没有该属性或者方法。此时去调用原型中的属性/方法
// 如果对象本身没有该属性/方法,原型中也没有该属性或者方法,此时会报错
// s1.__proto__ 对象的__proto__ 等于 构造函数的Student.prototype
// __proto__属性是非标准的属性
//
// console.log(s1.__proto__ === Student.prototype);
// console.dir(s1.__proto__);
// console.dir(Student.prototype);