我注意到 now() 只能由 Date 对象调用。 getTime() 只能由日期实例调用。
var dd1 = new Date();
//console.log(dd1.now()); //Throws error -> TypeError: Object Mon Aug 19 2013 16:28:03 GMT-0400 (Eastern Daylight Time) has no method 'now'
console.log(dd1.getTime());
console.log(Date.now());
//console.log(Date.getTime()); //Throws error ->TypeError: Object function Date() { [native code] } has no method 'getTime'
这种差异有正式的名称吗?这就是“静态”和“非静态”的区别吗?当我创建 Date 的新实例时,不是应该继承所有方法吗?
这是构造函数对象的属性和构造函数对象原型的属性之间的区别。 “now”属性是 Date 构造函数本身的属性,而不是 Date 构造函数的属性Date.prototype
。对于“getTime”来说,情况正好相反。
从语义上讲,这是有道理的:“现在”的概念独立于任何特定的日期实例。 “getTime”方法旨在报告特定日期实例实际表示的日期的时间戳。
如果您定义自己的构造函数,则可以创建“类方法”(我个人会犹豫如何称呼它们,但无论如何),如下所示:
function MyConstructor() {
// ...
}
MyConstructor.someMethod = function() {
// ...
}
Then MyConstructor.someMethod()
独立于类的任何特定实例调用该函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)