在Javascript中使用类变量

Using Class Variables in Javascript

本文关键字:类变量 Javascript      更新时间:2023-09-26

我正在尝试用Javascript创建一个class(或任何等效的),它在class Variable中存储一个计数,这样构造函数就可以为创建的对象分配一个id。类似以下内容:

Shift = function(hour) {
  this.id = Shift.idCount;
  Shift.idCount++;
} 

然而,我不知道应该在哪里初始化或定义idCount。有办法做到这一点吗?

我会用一个闭包来完成:

var Shift = function() {
  var idCount = 1; // initial id
  return function Shift(hour) { // this is the actual constructor
    this.id = idCount++;
    // other initialization ...
  };
}();
var aShift = new Shift(9);
alert(aShift.id); // 1
var anotherShift = new Shift(17);
alert(anotherShift.id); // 2

它使用匿名包装器函数来提供一个闭包,在该闭包中可以维护计数器。匿名函数返回稍后将调用的实际构造函数。对构造函数的每次调用都会将计数器的当前值复制到新对象的"id"属性,并将其递增

在学习JavaScript继承时,请记住,在C#或Java等语言中,"类"的概念实际上没有直接的等价物。试图让JavaScript像那些语言一样工作,几乎总是以沮丧和心碎告终。

是的,只需说

Shift.idCount = 0;

在CCD_ 1函数的定义之后。

这允许您随时访问计数器的当前值(如果需要的话)。如果不想直接访问计数器的值,也不想让其他人直接访问,那么按照@Pointy的建议,在Shift中使用一个私有变量。