原型指向的改变
- 实例对象的原型 __ proto__ 和构造函数的原型prototype指向是相同的
- 实例对象中的__proto__原型指向的是构造函数中的原型prototype
- 原型链:是一种关系,实例对象和原型对象之间的关系,关系是通过原型(__ proto__)来联系的
//人的构造函数
function Person(age) {
this.age=10;
}
//人的原型对象方法
Person.prototype.eat=function () {
console.log("人的吃");
};
//学生的构造函数
function Student() {
}
Student.prototype.sayHi=function () {
console.log("嗨,小苏你好帅哦");
};
//学生的原型,指向了一个人的实例对象
Student.prototype=new Person(10);
var stu=new Student();
stu.eat();
stu.sayHi();//报错
解释:学生的构造函数的原型(prototype)原本是指向自己的原型对象的,加上Student.prototype=new Person(10) 这行代码,把学生的原型(prototype)指向了一个人的实例对象,之前的指向已经没有了,因为实例对象的原型 __ proto__ 和构造函数的原型prototype指向是相同的,所以学生的实例对象(__ proto__)也指向了一个人的实例对象。