您的位置:首页 > Web前端 > JavaScript

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

2007-10-23 09:58 766 查看
常常说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所记录的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: