JS面向对象的基础(三)

   上节记录了自定义函数(类)的prototype的一些操作,使得自定义函数(类)能够通过prototype原型对象增加对象的属性和方法。那么是否可以通过prototype原型对象的操作,来实现对内置对象的属性以及方法进行修改呢?

 在JavaScript中,有很多内置对象:如 Function,  Object , Array , Date , RegExp ,Math ,Error 。通过prototype原型对象的操作,可以对这些内置对象进行二次封装。

   任何一个对象的实例都是Object的实例,因此我们对Object内置对象进行prototype修改。

  

  

   通过new 操作符获得自定义类class1的一个实例,因为这个实例也是Object对象的一个实例,所以这个实例享有Object对象的prototype的原型对象集合。当调用getType()方法时,this指针指向当前实例对象,相当于执行typeof(instance),显然结果显示为Object.但是对Function对象的实例进行typeof时候,这时候显示结果为function.虽然是结果是function,但是Function实例的根类型依然是Object。如果不是,又怎么能够得到Object原型对象集合中定义的getType()方法呢 ?

  它的现实意义是,例如,当你觉得Array对象没有提供足够的API来满足你对数组的操作时候,你可以对它进行扩展。

  

 

这里是深拷贝。通过这样的方式对Array对象进行扩展,解决了所有Array对象实例对不同API的需求。然而本人认为更有作用的地方在于对Function函数对象以及Object对象的prototype的修改,一个是所有函数对象的根,一个是所有对象的根。通过这样的机制,更多的重要应用将会得到进一步的展现。To be continue.......

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值