什么是继承
•在原有对象的基础上,略作修改,得到一个新的对象
•不影响原有对象的功能
//父类 createPerson function createPerson(name,sex){ this.name = name; this.sex = sex; } createPerson.prototype.showName = function(){ alert(this.name); } var a = new createPerson("小明","男"); //子类 createStarfunction 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 这个的问题。
具体解决方案见下篇、