Javascript 对象继承

这周五,去百度面试Web前段开发工程师,与面试官讨论到JavaScript继承问题,由于平时使用较少,也没说出多少东西。遂回来差了点资料。

 

观点:在JavaScript中,function相当于Java语言定义的类。

定义方式如下:

function foo(x){
//用this指定foo的成员变量x
this.x = x;
//这个y是foo的私有变量,无法被继承
var y = "This is a y";
this.z = "A z";
}

 

1.变量的继承 

 定义fooc并继承foo的成员变量:

function fooc(){
foo.apply(this, arguments);
//fooc自己的成员变量
 this.m = "An m";
}

 测试:

var fooc = new fooc("An x");
alert("fooc.x: "+fooc.x +"\n"+
         "fooc.y: "+fooc.y +"\n"+
         "fooc.z: "+fooc.z +"\n"+
         "fooc.m:"+fooc.m         
         );//从测试结果可得出fooc继承了foo的x和z变量。

 

 2.方法的继承

面试中,方法的继承提到了函数原型(prototype),实现方法的继承。

//使用原型,则有foo()定义的对象都可以使用该函数。
foo.prototype.hasx = function(){alert(this.x);}
//采用原型式继承,则每个由fooc()定义的对象都拥有foo对象的方法。
fooc.prototype = new foo();
fooc.prototype.hasm = function(){alert(this.m)};

 测试:

//成功继承foo的hasx()方法
fooc.hasx();
fooc.hasm();

 

 Ps:在方法继承中有涉及到“原型链”。关于原型链有待进一步学习。

 原型链可以参阅下面的文章,讲的挺清晰

 http://www.coolwubo.com/work/55649165e68f14d12eb02bda

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值