Javascript 如何编写一个具有属性的类,以及当新建一个对象时,该属性可以自行增加

Javascript 如何编写一个具有属性的类,以及当新建一个对象时,该属性可以自行增加,javascript,Javascript,我想写一个带有id属性的学生类 当我创建这样的新对象时: var s1 = new Student() var s2 = new Student() var s3 = new Student() 我可以得到这个结果: console.log(s1.id) //1 console.log(s2.id) //2 console.log(s3.id) //3 这里,每个新的Student对象将从外部生命中的var id中获得一个递增的id IIFE部分不是严格需要的,但它可以保护var id不被

我想写一个带有id属性的学生类

当我创建这样的新对象时:

var s1 = new Student()
var s2 = new Student()
var s3 = new Student()
我可以得到这个结果:

console.log(s1.id) //1
console.log(s2.id) //2
console.log(s3.id) //3
这里,每个新的
Student
对象将从外部生命中的
var id
中获得一个递增的
id


IIFE部分不是严格需要的,但它可以保护
var id
不被其他代码意外修改。如果没有生命,它只会是:

var id = 0;

function Student() {
    this.id = ++id;
}
但是
var id
可以由封闭范围内的任何代码访问,因此第一个示例更安全

这里,每个新的
Student
对象将从外部生命中的
var id
中获得一个递增的
id


IIFE部分不是严格需要的,但它可以保护
var id
不被其他代码意外修改。如果没有生命,它只会是:

var id = 0;

function Student() {
    this.id = ++id;
}

但是
var id
可以由封闭范围内的任何代码访问,因此第一个示例更安全。

您可以使用全局变量或静态变量(后者是首选)来实现这一点。这意味着变量属于类型而不是实例

function Student(){ 
    this.id = Student.currentId;
    Student.currentID++;
}
Student.currentID = 1;

您可以使用全局变量或静态变量(后者是首选)来实现这一点。这意味着变量属于类型而不是实例

function Student(){ 
    this.id = Student.currentId;
    Student.currentID++;
}
Student.currentID = 1;

如何分配id?如何分配id?仍然全局公开变量@cookie monster的答案是正确的,因为它是闭包。@cgatian:在
Student
上正确命名时,这不是问题。@cgatian我认为它不重要,因为它是
Student
对象的一部分,但如果您愿意,使用@cookiemonster.go仍然全局公开变量@饼干怪兽的答案是正确的,因为它是闭包。@cgatian:如果在
Student
上使用正确的名称空间,这不是问题。@cgatian我认为这不重要,因为它是
Student
对象的一部分,但如果您愿意,可以使用@cookiemonster。