js继承

来源:互联网 发布:php mvc理解 编辑:程序博客网 时间:2024/06/18 12:45
<script>
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.getName=function(){
alert(this.name);
};
Person.prototype.getAge=function(){
alert(this.age);
};



function Worker(name,age,job){
this.job=job;

Person.call(this,name,age);    //call和apply方法作用相同,只不过一个传入为数组,一个为参数列表

var args = [name,age];

Person.apply(this,args);        //this可换成其他任何对象,表现当前对象指向了Person对象,俗称引用传递

//构造函数伪装
//子类调用父级构造函数初始化属性,this代表一个new出来的Worker对象,
}

Worker.prototype=Person.prototype; //  //原型链:通过原型继承父级方法

Worker.prototype=new Person();   //第二种原型链方式

for(var i in Person){
Worker.prototype[i]=Person.prototype[i];    //通过原型继承父级方法
}
}
Worker.prototype.getJob=function(){
alert(this.job);
};
var man=new Worker("hkj","12","程序猿");
man.getJob();
</script>
原型链不可用解释:
var a=new Array[1,2,3,4];
var b=a;
b.push(3);
结果:a==b==[1,2,3,4,3];
var b = a;属于引用传递,用形象的方法表示就是一个房间存了1,2,3,4四个数据a则是打开房间的钥匙,后来复制了一个钥匙给b,当b对房间进行操作时所有数据都会有影响。
Worker.prototype=Person.prototype;     //表面上像是复制了原型参数,其实是复制了引用,子类会对父类产生影响,所以此方式不可用
原创粉丝点击