javascript中的静态成员
我试图在javascript中模拟静态成员 考虑以下代码:javascript中的静态成员,javascript,Javascript,我试图在javascript中模拟静态成员 考虑以下代码: // option A for static members: // constructor... function Person(name) { this.firstName=name; } Person.count=0; // like a static member... var p=new Person("Dan"); Person.c
// option A for static members:
// constructor...
function Person(name) {
this.firstName=name;
}
Person.count=0; // like a static member...
var p=new Person("Dan");
Person.count++;
alert(Person.count); // 1;
现在这个:
// option B for static members:
// constructor..
function Person(name) {
this.firstName=name;
Person.prototype.count++;
}
Person.prototype.count=0; // like a static member...
var p=new Person("Dan");
alert(Person.prototype.count); // 1;
// ...
那么,这两个例子之间的主要区别是,在第二个例子中,您可以引用构造函数中的静态成员(由于原型偏差),而在第一个例子中,您不能?在这两个例子中,您都可以从构造函数中找到它。区别在于你是否能通过你的一个物体到达它 选项A:
function Person (name) {
this.firstName = name;
Person.count++;
}
Person.count = 0;
var p = new Person("Dan")
console.log(Person.count) // 1
console.log(p.count) // undefined
function Person (name) {
this.firstName=name;
Person.prototype.count++;
}
Person.prototype.count = 0;
var p = new Person("Dan");
console.log(Person.prototype.count) // 1
console.log(p.count) // 1
选项B:
function Person (name) {
this.firstName = name;
Person.count++;
}
Person.count = 0;
var p = new Person("Dan")
console.log(Person.count) // 1
console.log(p.count) // undefined
function Person (name) {
this.firstName=name;
Person.prototype.count++;
}
Person.prototype.count = 0;
var p = new Person("Dan");
console.log(Person.prototype.count) // 1
console.log(p.count) // 1
@yoavbarnea-我认为选项A更好。@yoavbarnea选项B不是一个真正的静态成员,而是一个实例成员。碰巧,使用JS,您可以通过在原型上访问实例成员来调用它们