初识prototype

                                     微笑  初识prototype微笑

         早就知道JavaScript有一个类似于C++的继承特性,也早就想领略一下它的强大。在我心里我认为js的完美程度不次于任何所知语言,他的强大在HTML5发布以后,水涨船高,地位也空前重要,在HTML5趋于引领整个互联网时代的进程中,它将发挥更大的作用。而继承是js的一个重要属性,你将在大部分网站看到prototype,包括移动Web的开发。

 

              刚看到prototype的时候,一头雾水,搞不清它是做什么的,怎么就实现继承了,但我也想大部分的人一样,对编码有种喜爱,如果搞不懂就不断的尝试与研究。

行了,废话不多说,一起走进prototype

 

        要提prototype的作用,首先不得不引入一个概念,那就是原型链

那么什么是原型链:

                         从字面意思来看是由原型构成的链子,没错可以这样去理解,每一个独特的原型,通过一条链子联系起来,这样通过这条链子为每个原型又设置了原型,就实现了一层一层的集成。

而每个原型又是如何产生的呢,原来,每一个构造函数,都有一个原型,也就是构造函数的父亲,如果为构造函数实例化一个对象,那么这个实例化的对象会指向构造函数的原型,也就是指向构造函数的父亲,而构造函数的这个父亲,也会有一个指针指向自己的儿子。而这个父亲也可能有自己的原型,也就是自己的父亲也可能有自己的爷爷.就像父亲生儿子,儿子又生孙子,孙子再生重孙子,这样我们就可以通过重笋子访问的孙子通过孙子访问儿子,又通过儿子访问父亲,这就连成了一个链,可以通过重孙子访问道祖宗十八代的信息。

                        这样就有了一个这样的机制,如果初始化了一个实例,当访问其中内容时,先在实例中查找,如果找到了停止,否则,延着原型连向上查找,知道找到。这就像是有记录一个家族最后一个做官的是谁,首先看最后一代,没人做官,向父辈查询,再没有向祖辈查询,知道找到做官的人,停止向上搜索,返回数据,这就是原型链,这就是继承的本质。

这里还有一个幕后工作者不得不提,这就是Object,z这位哥哥对于函数来说,就像是人类的亚当一样,所有人的父亲,而它是所有原型的父亲。(这个知道就行,其实我们访问的很多函数属性,就出自object)

那说了这么多,我们的主角终于要登场了prototype,怎么用呢

假如我们定义了一个A函数

function A( ){     

}

//定义原型里的函数B

A.prototype.B=function( )

{

 

}

//这样就为A的原型添加了函数B,这样当我们实例化一个A对象,就可以访问到它原型的B函数

var   b=new A( )

b.B( );

访问到了B,其他属性也是一样的

 

到这里,prototype就介绍完了,大家发现为什么这么快,前边一直再讲

原型连链,因为原型链是prototype的钱基础,如果没有原型链,那么prototype也必然不会存在,了解原型链是明白怎么使用prototype的必要过程,而prototype则是诠释原型链,因此拿它出来说。

 

那么大家想一下,虽然功能很强大,但有没有什么缺点,聪明人已经发现,由于原型的属性和方法被所有实例共享,因此在继承时就会产生麻烦,至于是什麻烦,以及怎样解决,下次,会详细总结。

开心一下:

 有个山里人进城吃了一次油糕,感觉香甜脆酥,十分可口。回到家里对妻子说:油糕非常好吃。咱也吃一顿油糕吧。
没有软黍面,妻子说:就把白面和上。
没有白糖做馅,妻子说:把韭菜包上。
火生着了,没油下锅,妻子说:把水添上。
煮出来一吃,妻子说:我以为油糕是什么呢,不就是饺子嘛!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值