【发布时间】:2017-05-06 07:02:06
【问题描述】:
我不太了解如何/何时使用 javascript 原型。我了解这两种分配属性的方式之间的区别:
静态属性
var Date = function () {};
Date.setTime = function (key) {
};
Date.updateTime = function (key, value) {
};
setTime 和 updateTime 是直接添加到 Date 对象的属性。
为实例原型分配属性
var Date = function () {};
Date.prototype.setTime = function (key) {
};
Date.prototype.updateTime = function (key, value) {
};
setTime 和 updateTime 是 Date 实例将继承的已定义属性。
我的问题:您如何知道何时应该将属性分配给实例/原型或直接分配给对象(静态变量)?我什么时候应该决定将变量直接分配给一个对象,而不是让它对所有实例都可用?
【问题讨论】:
-
好吧,
Date.now()之类的东西在不引用任何特定的现有 Date 实例的情况下是有意义的,而Date.prototype.getFullYear()则没有。你问的是这个吗? -
@Pointy 我的问题是我应该什么时候决定将变量直接分配给对象而不是使其可用于所有实例?
-
如果函数与任何特定实例没有任何关系,那么它可以继续构造函数本身。如果该函数仅在涉及实例时才有意义(例如,它必须在代码中引用
this.something),那么它必须位于原型上并且可用于实例。
标签: javascript javascript-objects