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

时间:2023-03-10 00:13:00
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 这个的问题。

具体解决方案见下篇、