当前位置: 代码迷 >> 综合 >> js 构造函数继承及原型链继承
  详细解决方案

js 构造函数继承及原型链继承

热度:3   发布时间:2023-10-17 06:55:39.0

1、构造函数继承

实现原理是,在子类的构造函数中,通过apply()或call()的形式,调用父类构造函数已实现继承

//定义一个超类/父类: 人
function Person (name, age) {//人都有姓名,年龄,会吃饭,会睡觉//传入出生年份 year,自动计算年龄this.name = name;this.age = age;this.eat = function () {alert('吃饭');}this.sleep = function () {alert('睡觉');}
}
?
//定义一个子类: 学生
//学生Student也是人,自然要继承超类 Person 的所有属性和方法
//学生都应当有姓名、年龄、会吃饭、会睡觉
//当然学生也有自己的一些属性:学号,学校名称等,和方法,比如都要去做一件事:写作业
function Student (stuID, schoolName, name, age) {this.stuID = stuID;this.schoolName = schoolName;//用call调用 Person,以实现继承Person.call(this, name, age);//用apply调用person实现继承Person.apply(this,[name,age]);// 用bind实现继承Person.bind(this)(name,age);
}
?
Student.prototype.doHomework = function () {alert('做作业');
}
?
//实例化一个学生
var stu1 = new Student(1001, '第一小学', '王宝宝',20);
console.log(stu1.stuID);       //1001
console.log(stu1.schoolName);  //'第一小学'
console.log(stu1.name);        //'王宝宝'
console.log(stu1.age);         //20
stu1.eat();                    //'吃饭'
stu1.sleep();                  //'睡觉'
stu1.doHomework();             //'做作业'    

2、js原型链继承

所有的实例都有一个内部指针,指向它的原型对象,并且可以访问原型对象上的所有属性和方法。//定义一个 Animal 构造函数,作为 Dog 的父类
function Animal () {this.superType = 'Animal';
}
?
Animal.prototype.superSpeak = function () {alert(this.superType);
}
?
function Dog (name) {this.name = name;this.type = 'Dog';  
}
//改变Dog的prototype指针,指向一个 Animal 实例
Dog.prototype = new Animal();
//上面那行就相当于这么写
//var animal = new Animal();
//Dog.prototype = animal;
?
Dog.prototype.speak = function () {alert(this.type);
}
var doggie = new Dog('jiwawa');
doggie.superSpeak();  //Animal 

  相关解决方案