我正在尝试用 Javascript 创建一个类(或者任何等效的类),它将计数存储在类变量中,以便构造函数可以为创建的对象分配一个 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 表现得像那些语言的尝试几乎总是以挫败和心碎告终。
关于javascript - 在 Javascript 中使用类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26653637/