#什么是面向对象的继承
![](https://box.kancloud.cn/711e48fb3ae334c97974ccef74e0293b_857x585.png)
继承:子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 )
属性的继承:调用父类的构造函数 call
方法的继承:CreateStar.prototype = CreatePerson.prototype
```
function CreatePerson(name, sex){ // 父类
this.name = name;
this.sex = sex;
}
CreatePerson.prototype.showName = function(){
alert(this.name);
};
var p1 = new CreatePerson('小明', '男');
p1.showName(); // 小明
function CreateStar(name, sex, job){ // 子类
CreatePerson.call(this, name, sex);
this.job = job;
}
CreateStar.prototype = CreatePerson.prototype;
var p2 = new CreateStar('黄晓明', '男', '演员');
p2.showName(); // 黄晓明
```
方法的继承现在采用的是:CreateStar.prototype = CreatePerson.prototype,这是引用赋值,这就导致当给子类新增一个方法的时候会影响到父类,比如:
```
function CreatePerson(name, sex){ // 父类
this.name = name;
this.sex = sex;
}
CreatePerson.prototype.showName = function(){
alert(this.name);
};
var p1 = new CreatePerson('Mary', '女');
p1.showName(); // 小明
function CreateStar(name, sex, job){ // 子类
CreatePerson.call(this, name, sex);
this.job = job;
}
CreateStar.prototype = CreatePerson.prototype;
CreateStar.prototype.showSex = function(){
alert(this.sex);
};
var p2 = new CreateStar('黄晓明', '男', '演员');
p2.showName(); // 黄晓明
p1.showSex(); // 女 这里就说明影响到父类了
p2.showSex(); // 男
```
解决方法:请看下一节《面向对象之拷贝继承》
- 01 JS面向对象及组件开发
- 02 传统的过程式编写选项卡
- 03 用面向对象封装通用选项卡
- 04 控制多个选项卡自动播放
- 05 用面向对象编写拖拽
- 06 JS面向对象及组件开发
- 07 hasOwnProperty和constructor的使用
- 08 instanceof运算符的使用
- 09 利用toString做类型判断
- 10 什么是面向对象的继承
- 11 面向对象之拷贝继承
- 12 编写继承的拖拽
- 13 继承的其他形式之类式继承
- 14 继承的其他形式之原型继承
- 15 组件开发是什么
- 16 给拖拽组件配置不同参数
- 17 封装弹框组件
- 18 使用对象标记已弹出弹框
- 19 复杂组件开发之自定义事件
- 20 原生JS实现自定义事件
- 21 自定义事件实例
- 22 基于JQ的选项卡组件开发