1

我正在尝试通过使用我的 getTime 对象的原型来继承/获得对 Date 对象的所有属性/方法的访问权限,但是我遗漏了一些东西。请指出我正确的方向。

//empty constructor 
function getTime(){}

//attempt to inherit all of the properties and methods of Date object
getTime.prototype = new Date();

//create a new Date object and test
//this works
var wt = new Date();
alert(wt);

//create a new getTime object and test.
//I was uner the impression that getTime object 
//now has access to all the properties/methods of the Date object.
//'This generates:TypeError this is not a Date object.'
var wt2 = new getTime();
alert(wt2.getHours());

JSfiddle:http: //jsfiddle.net/nysteve/QHumL/12/

4

2 回答 2

1

访问 Date 对象的原型实际上是有效的,但这些方法期望处理 Date 类型的对象。更多详细信息:https ://stackoverflow.com/a/7141488/2847629

于 2013-10-04T22:09:33.067 回答
0

我认为您的getTime-constructed 对象确实可以访问 Date 对象的所有属性/方法。如果没有,错误将类似于getHours is not a function(因为它是未定义的)。

我不确定 Date 对象的getHours方法是如何实现的,但 JavaScript 确实有一个hasOwnProperty方法。如果 Date 对象是您在 JavaScript 中实现的东西,您可以编写它的getHours方法来检查调用它的对象(在您的示例中是wt2)是否在其自身(而不是在其原型对象上)定义了一个属性.

Date 对象的getHours方法可能正在做类似的事情。

于 2013-10-04T22:04:34.843 回答