💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
#什么是面向对象的继承 ![](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(); // 男 ``` 解决方法:请看下一节《面向对象之拷贝继承》