如何从Javascript Date Object继承?

我试图创建和继承Date对象的对象.

下面是我想要做的Firebug成绩单.

>>> date_son = Object.create( Date )
Function {}
>>> typeof date_son
"object"
>>> date_son.gettime
undefined
>>> date_son.prototype.getTime
getTime()

我使用Object.create创建一个继承自Date的对象date_son. getTime函数/属性在date_son.protype上可用,但在date_son对象本身上不可用.

我显然做错了什么.任何人都可以指出我正确的方向如何创建一个从Date继承的对象,以便date_son.getTime()在date_son对象上可用.

我不希望直接扩展Date,因为我认为搞乱/改变全局变量是糟糕的编程习惯.

解决方法

Mozilla的MDN文档中有一条注释( https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date):

Note: Note that Date objects can only be instantiated by calling Date or using it as a constructor; unlike other JavaScript object types,Date objects have no literal Syntax.

Object.create在给定参数时需要一个实例. Date本身不是实例,因此不能与Object.create一起使用.

此外,要解决直接延长日期的问题:

扩展本机对象是经常进行的. MooTools使用他们自己的.implement方法来做它:

https://github.com/mootools/mootools-more/blob/master/Source/Types/Date.js#L55

有关扩展本机的教程:

http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-how-to-extend-built-in-objects-in-javascript/

编辑:

还有一篇关于延伸当地人的假定弊端的文章http://perfectionkills.com/extending-built-in-native-objects-evil-or-not/

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...