原型链 重点
原型链: 是一种关系,实例对象和原型对象之间的关系,关系是通过原型(__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();
原型指向可以改变
- 实例对象的原型
__proto__
指向的是该对象所在的构造函数的原型对象。 - 构造函数的原型对象(
prototype
)指向如果改变了,实例对象的原型(__proto__
)指向也会发生改变。
原型的指向是可以改变的 如果原型指向改变了,那么就应该在原型改变指向之后添加原型方法
实例对象和原型对象之间的关系是通过__proto__
原型来联系起来的,这个关系就是原型链。
函数中的this的指向
- 普通函数中的this是谁? --> window
- 对象.方法中的this是谁? --> 当前的实例对象
- 定时器方法中的this是谁? --> window
- 构造函数中的this是谁? --> 实例对象
- 原型对象方法中的this是谁? --> 实例对象
注意:BOM中顶级对象是window,浏览器中所有的东西都是window的
网友评论