首页 > Web开发 > 详细

关于js中的类式继承

时间:2019-04-20 22:27:06      阅读:116      评论:0      收藏:0      [点我收藏+]
//父类
function Aa(){
this.name="小名";
};
Aa.prototype.showName=function(){
return this.age=10;
};
//子类
function Bb(){
};
Bb.prototype=new Aa();//实现继承
var b1=new Bb();
alert(b1.name);//小名
//-----------------------------------------------------------------------------
//上面的继承有几点问题:1.constractor的指向被改变了
alert( b1.constructor );
// 弹出结果为:
function Aa(){
this.name="小名";
};
//所以 constractor的指向被改变了;修正指向
Bb.prototype = new Aaa();//这个就叫做类式继承
Bb.prototype.constructor=Bb;//修正指向问题
//-----------------------------------------------------------------------------
// 2.子类可以改变父类的属性
//如果上面的代码改成

//父类
function Aa(){
this.name=[1,2,3];
};
//子类
function Bb(){
};
Bb.prototype=new Aa();//实现继承
var b1=new Bb();
b1.name.push(4);
var b2=new Bb();
console.log(b2.name);//[1,2,3,4]
//-----------------------------------------------------------------------------
//此处的b1 b2相互影响了,改变了父类函数Aa,所以是有问题的,上面的代码可改成:
//父类
function Aa(){
this.name="小名";
};
Aa.prototype.showName=function(){
return this.age=10;
};
//子类
function Bb(){
};
var F=new f();
F.prototype=Aa.prototype;//此处只能传递方法,没有办法传递属性
var b1=new Bb();
Bb.prototype=new F();//把F的实例赋给Bb的原型
console.log(b1.age);

关于js中的类式继承

原文:https://www.cnblogs.com/hilxj/p/10742846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!