Date.prototype.newFunction 和 Date.newFunction 之间的区别

Difference between Date.prototype.newFunction and Date.newFunction?

本文关键字:Date newFunction 区别 prototype 之间      更新时间:2023-09-26

Date.prototype.newFunction和Date.newFunction有什么区别?我知道原型继承在Javascript中是如何工作的,所以我理解原型示例,但是Date.newFunction抛出了我。

我想你知道,原型包含的属性将由通过构造函数创建的对象自动继承。

Date.newFunction只是构造函数本身的一个属性,只能通过 Date.newFunction 访问。 它不由通过构造函数创建的对象继承,并且无法通过构造函数创建的特定实例访问。

有人会说Date.newFunction类似于其他语言中的类静态方法。 它不是附加到特定实例的方法,而更像是该对象类型的帮助程序函数。 这些类型的方法通常不对实例数据进行操作,它们可以很容易地成为全局实用程序函数,但从命名空间的角度来看,将它们分配为构造函数的属性通常更干净。

例如,在 Javascript Date 对象上,Date.now()Date.parse() 等方法就是此类静态方法的示例。 您无需创建实例来使用它们,只需直接调用它们:

var tStart = Date.now();

要记住的一件事是,Javascript中的任何函数也是一个对象,因此它可以具有.prototype属性之外的任意属性,并且将该功能用于静态方法只是一种用途。

Date.a = function () {
    return 'Date.a';
};
Date.prototype.a = function () {
    return 'Date.prototype.a';
};
Date.a(); // return 'Date.a'
var b = new Date();
b.a(); // return 'Date.prototype.a'