如何利用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所记录的
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所记录的
相关文章推荐
- JavaScript原型的工作原理(以及如何利用它来实现类的继承)
- 【翻译】javascript原型继承到底是如何实现的
- JavaScript 利用prototype原型实现封装继承多态
- javascript 基于原型的知识--如何实现继承
- JavaScript 利用原型和原型链实现对象继承
- Javascript的原型继承是如何工作的
- JavaScript面向对象编程(6)利用原型链实现继承
- 如何利用javascript实现全部删或清空所选
- 深入理解JavaScript是如何实现继承的
- 利用javascript中的call实现继承
- 利用javascript中的call实现继承
- JavaScript实现继承机制(3)——通过原型链(prototype chaining)方式
- 关于javascript中变量是如何存储调用、以及函数的继承实现
- 深入理解JavaScript是如何实现继承的
- javascript中如何实现继承
- JavaScript是如何实现继承的(六种方式)
- 聊聊JavaScript如何实现继承
- 如何在CSS样式中利用expression实现JavaScript中的onmouseover/onmouseout事件
- javascript基础之十(基于原型实现类的继承)
- Javascript--原型链实现继承