JS面向对象组件(四) -- 面向对象的继承

什么是继承
  •在原有对象的基础上,略作修改,得到一个新的对象
  •不影响原有对象的功能
//父类   createPerson
 function  createPerson(name,sex){
     this.name = name;
     this.sex = sex;
 }
 createPerson.prototype.showName = function(){
     alert(this.name);
 }
 var a = new createPerson("小明","");

 //子类   createStar
function createStar(name,sex,job){
    //createPerson(name,sex);   //最初的想法肯定是直接调用父类的构造函数,但是结果不行。因为调用这个构造函数前面没任何东西,this代表window、
    createPerson.call(this,name,sex);   //所以要通过call改变this的指向。  指向为这儿b。
    this.job = job;
}
 createStar.prototype = createPerson.prototype;    //这个就存在对象引用的问题,但凡改变两个对象中的任意一个,另一个也会变。
 createStar.prototype.showJob = function(){
     alert(this.job);
 }
 var b = new createStar("黄晓明","","演员");
 b.showName();

 console.log(a);    //会多出一个showJob
 console.log(b);

所以上面特意添加了个子类的方法showJob,来测试 createStar.prototype = createPerson.prototype 这个的问题。

具体解决方案见下篇、
原文地址:https://www.cnblogs.com/wanliyuan/p/5245133.html