25_面向对象程序设计(原型【八】继承的三种方式
程序员文章站
2022-06-15 13:46:28
...
实现继承的几种方式:
简单继承(原型继承)
原型继承的特点:即继承了父类的模板,又继承了父类的原型对象
//父类
function Person(name, age){
this.name = name;
this.age = age;
};
//父类的原型对象属性
Person.prototype.id = 10;
//子类
function Boy(sex){
this.sex = sex;
};
//使用原型链方式实现继承
Boy.prototype = new Person("z3");
var b = new Boy();
console.info(b.name); //z3
console.info(b.id); //10
类继承(模版继承或借用构造函数继承)
只继承模板,不继承原型对象
//父类
function Person(name, age){
this.name = name;
this.age = age;
};
//父类的原型对象属性
Person.prototype.id = 10;
//子类
function Boy(name, age, sex){
//借用构造函数,继承父类的模板
//使用call()方法后相当于在Boy()中增加了两条语句this.name = name; this.age = age;
//不会使用到Person.prototype原型对象中的任何属性和方法
Person.call(this, name, age);
this.sex = sex;
};
var b = new Boy("z3", 20, "男");
console.info(b.name); //z3
console.info(b.age); //20
console.info(b.sex); //男
console.info(b.id); //undefinde 父类的原型对象并没有被继承
混合使用继承实现完整的继承
原型继承和借用构造函数继承,目前使用较多
//父类
function Person(name, age){
this.name = name;
this.age = age;
};
//父类的原型对象属性
Person.prototype.id = 10;
Person.prototype.sayName = function(){
console.info(this.name);
};
//子类
function Boy(name, age, sex){
//借用构造函数,继承父类的模板
//使用call()方法后相当于在Boy()中增加了两条语句this.name = name; this.age = age;
//不会使用到Person.prototype原型对象中的任何属性和方法
Person.call(this, name, age);
this.sex = sex;
};
Boy.prototype = new Person(); //原型继承 此处可以不再传递参数
var b= new Boy("李四", 20, "男");
console.info(b.name);
console.info(b.id); //10 使用的是父类原型中的属性
b.sayName(); //李四 使用的是父类原型中的方法
转载于:https://my.oschina.net/u/2317126/blog/387371
推荐阅读
-
javaScript面向对象的程序设计(八)——继承
-
26_面向对象程序设计(原型【九】模拟extjs底层继承方式
-
【JavaScript学习】面向对象的程序设计(6):原型式继承
-
25_面向对象程序设计(原型【八】继承的三种方式
-
【JavaScript学习】面向对象的程序设计(3):原型链继承
-
JavaScript_04面向对象程序设计(原型【八】)深入解析原型继承的概念
-
JavaScript面向对象-基于原型链和函数伪装组合的方式实现继承
-
实现JavaScript中继承的三种方式_js面向对象
-
JavaScript面向对象-基于原型链和函数伪装组合的方式实现继承
-
JavaScript_06面向对象程序设计(原型【九】)模拟extjs底层继承方式