js继承

<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;     //表面上像是复制了原型参数,其实是复制了引用,子类会对父类产生影响,所以此方式不可用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值