JS面向对象继承实现原理如下:
1.通过call()方法(对象冒充机制)将父类的属性继承;
call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 调用一个对象的一个方法,以另一个对象替换当前对象;
2.通过prototype属性继承父类方法(防止方法的副本重复创建,造成资源浪费)。
如下实例:
/**
* js面向对象继承
*/
//父类
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.showName = function(){
alert(this.name);
}
Person.prototype.showAge = function(){
alert(this.age);
}
//子类
function Student(name, age, grade){
Person.call(this, name, age);
this.grade = grade;
}
for(var i in Person.prototype) {
Student.prototype[i] = Person.prototype[i];//继承基类原型链上的成员
}
//新的成员方法
Student.prototype.showGrade = function(){
alert(this.grade);
}
var p1 = new Person("小明", "20");
p1.showName();
var p2 = new Student("小红", "21", "80分");
p2.showName();
p2.showGrade();