function Person (name,age) {
this.name = name;
this.age = age;
}
Person.prototype.sayName = function() {
alert('我的名字是'+this.name);
};
function Student(name,age,school) {
Person.call(this,name,age);
this.school = school;
}
function Fn() {}
Fn.prototype = Person.prototype;
Student.prototype = new Fn();
Student.prototype.constructor = Student;
//通过Fn构造函数,避免了子类Student继承超类Person时,调用超类Person的
//构造函数,进而避免了在子类Student的原型对象即Student.prototype上创建不必要的属性
Student.prototype.saySchool = function() {
alert('我的学校是' + this.school);
};
Student.prototype.sayName = function () {//覆盖了超类中的sayName函数
alert('我的学生名字是' + this.name);
};
var per = new Person('刘志刚', '18岁');
var stu = new Student('郑晓光','19岁','埃及大学');
per.sayName();
stu.sayName();
delete Student.prototype.sayName;//删除子类的sayName函数后即可重新访问超类中的sayName函数
stu.sayName();
stu.saySchool();
javascript继承总结
最新推荐文章于 2023-12-27 10:41:34 发布