如何利用javascript中的原型实现继承

常常说prototype,那 javascript里prototype到底是什么呢?金山词霸一下就知道了,原型。

msdn中关于prototype的解释是 返回对象类型原型的引用。

这段话是非常tmd的抽象,太令人费解了。

后来看过了 javascript权威指南一书后,我大概理解了其中的道理。

其中书中有这么一句,所有的对象都有一个prototype,它引用了对象。虽然原型对象初始化时是空的,但是你在其中定义的任何属性都会被该构造函数创建的所有对象继承。

一直一来都觉得js的继承和类是很奇怪的东西,这里举个例子说明一下

兔子这个类继承于啮齿类动物,其他的语言只要直接继承就可以了,但是js是不一样的,js一定要声明一个啮齿类动物的实例然后才能让兔子这个类继承

举个例子:
<script>
function cls1()
{
  this.a='123';

function cls2(){}
cls2.prototype=new cls1();
var o=new cls2();
alert(o.a);
</script>

当然大家可能在一些高人中的代码中看到这种类型的代码
<script>
var o={a:123}
function cls2(){}
cls2.prototype=o;
var x=new cls2();
alert(x.a);
</script>
其实道理也是一样o是new Object();这样写法的一种简化

根据意见反馈,补充说明一下

但是你在其中定义的任何属性都会被该构造函数创建的所有对象继承。

对于这句话的理解
<script>
function cls1(){}
cls1.prototype.fun1=function(){alert(123);}
var o=new cls1();
o.fun1();
</script>
其实这时并没有真实的cls1的prototype,但是给cls1的prototype加了一个fun1的属性,这时也会被 javascript所记录的  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值