Javascript 如何编写一个具有属性的类,以及当新建一个对象时,该属性可以自行增加
我想写一个带有id属性的学生类 当我创建这样的新对象时: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不被
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。