我们知道javascript没有“类”的概念,那么javascript是不是就不能实现继承呢? 答案是否定的,下面的反例实现了两个类的继承。
Person是父类,Student是泛型类型,extend是实现两个对象继承的函数。 “subClass.superClass = superClass.prototype.constructor”是在泛型类型上添加一个静态属性,用于保存父类的构造函数javascript类的继承,方便父类属性的复制继承,“Student.superClass.call( this,name,age); //属性继承”就是实现父类属性的复制继承。 要实现两个类的集成javascript类的继承,只需要调用extend函数即可完成继承。
index.html
// Super class
var Person = function(name,age) {
this.name = name;
this.age = age;
this.books = [];
};
Person.prototype.getBooks = function() {
return this.books;
};
// sub Class
var Student = function(no,name,age) {
this.no = no;
Student.superClass.call(this,name,age); // 属性继承
};
// 继承
function extend(subClass,superClass) {
var F = function() {};
F.prototype = superClass.prototype;
subClass.prototype = new F();
subClass.superClass = superClass.prototype.constructor;
};
//Student.prototype = new Person();
extend(Student,Person);
Student.prototype.show = function() {
alert(this.name + "," + this.age);
};
var stu1 = new Student("wangmei",26);
stu1.books.push("java");
alert(stu1.getBooks());
var stu2 = new Student("jiashu",28);
stu2.books.push("javascript");
alert(stu2.getBooks());