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