prototype属性

JavaScript通过一种[b] 链接[/b] 机制来支持继承, 而不是通过 完全面向对象语言 (如Java) 所支持的基于类的继承模型。

每个JavaScript对象都有一个内置的属性,名为[color=blue] prototype[/color]。

prototype属性保持着对另一个JavaScript对象的引用,这个对象作为当前对象的父对象。

当通过 点记法 引用对象A的一个函数或属性时,倘若对象上没有这个函数或属性,就将检查该对象prototype属性所引用的父对象P_A,查看父对象P_A上是否拥有所请求的函数或属性。

如果prototype属性所引用的对象P_A也没有所需的函数或属性,则会进一步检查P_A对象的prototype属性,沿着“链”依次向上查找,直到找到所请求的函数或属性,或者到达“链尾”。如果到达“链尾”还没找到,就返回[color=blue]undefined [/color]。

综上所述,JavaScript的继承结构应该是一种 “has a”关系,而不是Java的“is a”关系。

prototype机制是动态的,可以根据需要在运行时配置,而无需重新编译。你可以在需要时向对象添加属性和函数,而且能动态地把单独的函数合并在一起,创建一个动态的,全能的对象。

对prototype机制的这种高度动态性,可谓褒贬不一,因为这种机制学习和应用起来很不容易,但是一旦正确地加以应用,它就显得异常强大且非常健壮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值