原型链:
由多级父对象(原型对象)逐级继承形成的链式结构。
一个对象可以访问的所有父级原型对象,以及这个对象可用点访问到的所有属性和方法。
判断一个对象能否使用某一个属性和方法,唯一标准就是这个属性或方法是否保存在这个对象的原型链上。
属性或方法的使用顺序:先自由,再共有,就近原则。
多态:
一个函数在不同情况下表现出不同的状态
重写:
在子对象中定义一个和父对象中成员名同名的自有成员。
Student.prototype.className=“初一 二班”
lilei.className=“初一 三班”----重写
从父对象继承来的成员可能不好用,都可以在子对象中重写同名的成员。
自定义继承:
new自动生成的_ proto 的继承关系是可以修改的
1.只更换一个对象的父对象
子对象. proto =新父对象(不是所有浏览器都支持)
Object.setPrototypeOf(子对象,父对象)代替 proto _
设置子对象的原型对象为父对象
function Student(sname,sage){
this.sname=sname;
this.sage=sage;
}
var father={
money:100000000,
car:BMW X7
}
Object.setPrototypeOf(hmm,father);
var lilei=new Student("lilei",17);
var hmm=new Student("hmm",18);
console.log(lilei);
console.log(hmm);
更换一种类型下的所有子对象的原型对象:
只需要修改构造函数的prototype属性
构造函数.prototype=新属性
在创建子对象之前就要更换
function Student(sname,sage){
this.sname=sname;
this.sage=sage;
}
var father={
money:10000000,
car:BMW X7
}
Student.prototype=father;
var lilei=new Student("lilei",18);
var hmm=new Student("hmm",17);
console.log(lilei);
console.log(hmm);