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();