在Javascript中使用类变量

时间:2014-10-30 12:58:27

标签: javascript

我正在尝试在Javascript中创建一个类(或者无论等价是什么),它将一个计数存储在一个类变量中,这样构造函数就可以为创建的对象分配一个id。如下所示:

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

但是我不知道idCount应该在哪里初始化甚至定义。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

我用闭包来做:

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像那些语言一样,几乎总是以挫败感和心碎而结束。

答案 1 :(得分:1)

是的,请说

Shift.idCount = 0;

定义Shift函数后。

允许您随时访问计数器的当前值(如果需要)。如果您想要直接访问计数器的值,并且不希望其他任何人,则在Shift内使用私有变量作为@Pointy提出。