<script>
function human(name,age){
this.name=name
this.age=age
}
human.prototype.chifan=function(){
console.log(this.name+"正在吃饭")
}
human.prototype.shuijiao=function(){
console.log(this.name+"正在睡觉")
}
// //原型继承
// //缺点:所有属性的值,只和创建human对象时保持一致
// function Student(name,age){
// }
// Student.prototype.tingke=function(){
// console.log(this.name+"正在听课")
// }
// Student.prototype=new human("继承学生",10)
// var S1=new Student("小明",8)
// console.log(S1) //结果为 继承学生 10
// function Teacher(name,age){
// }
// Teacher.prototype.jiangke=function(){
// console.log(this.name+"正在讲课")
// }
// Teacher.prototype=new human("继承老师",30)
// var T1=new Teacher("张老师",28)
// console.log(T1) //结果为 继承老师 30
//冒充继承:通过改变this的指向性,实现的继承方法
//缺点:无法继承原型,只是调用了一次函数
// function Student(name,age){
// human.call(this,name,age)
// }
// Student.prototype.tingke=function(){
// console.log(this.name+"正在听课")
// }
// var S1=new Student("小明",8)
// console.log(S1) //显示小明 年纪8
// console.log(S1.chifan()) //报错
// function Teacher(name,age){
// human.call(this,name,age)
// }
// Teacher.prototype.jiangke=function(){
// console.log(this.name+"正在讲课")
// }
// var T1=new Teacher("张老师",28)
// console.log(T1) //显示张老师 年纪28
// console.log(T1.shuijiao()) //报错
//组合继承 最优解决方案
function Student(name,age){
human.call(this,name,age)
}
Student.prototype.tingke=function(){
console.log(this.name+"正在听课")
}
Student.prototype=new human()
var S1=new Student("小明",8)
console.log(S1) // 显示:小明 8
console.log(S1.chifan()) //显示:小明正在吃饭
function Teacher(name,age){
human.call(this,name,age)
}
Teacher.prototype.jiangke=function(){
console.log(this.name+"正在讲课")
}
Teacher.prototype=new human()
var T1=new Teacher("张老师",28)
console.log(T1) // 显示:张老师 28
console.log(T1.shuijiao()) //显示:张老师正在睡觉
</script>