标签类目:Class.create()

javascript基于prototype原型的继承链

javascript中类与父类之间的继承都是由其prototype对象来链接起来继承的,默认情况下所有的类都继承Object对象,包括自定义对象,Object对象也是所有对象的最顶层对象。但这一点没有什么让人感觉惊艳的,因为大多数编程语言基本都是如此。也可以把prototype认为是所有javascript对象都拥有的一个属性,这个属性帮助对象自身继承创建此对象的构造器或者说是类的原型中所定义的属性成员和方法成员。但是javascript基于prototype的继承不像其他高级语言的继承那么繁琐,javascript的继承显得简约而又简单。

var num=new Number(100);创建一个对象之后立刻调用JS中的预先为我们定义好Number()函数,为Number()函数传递一个参数100,函数启动自身的构造器,初始化一个数字与新建的这个对象关联起来,num变量指向这个对象,同时,这个对象便获取继承到了Nunber()函数预定义好的prototype对象所指向的方法。

函数也是对象,函数也可以拥有方法(函数)和属性,Number.prototype.toFixed();返回toFixed(){…..},明显的JS已经为我们定义好了一个原型,可以拿来直接使用的,那么很自然的由Number函数构造出来的对象也将继承Number函数的prototype定义的方法,num.toFixed(index)证明其确实是这样。

prototype是javascript提供开发人员的一个显式的继承接口,那么自定义对象便有了更多的扩展空间,既然每个对象都拥有了一个显式的prototype,这样大家只要有了构造函数便就有了一直向上延伸的继承链了,Number()函数是预先为开发者定义好的函数,为这个函数定义一个新的prototype这样Number函数那些少得可怜方法就可以由我们自己扩展了,Prototype框架对Number类的扩展的一部分: 继续阅读 »

返回顶部