javascript中的静态成员

Static members in javascript

本文关键字:静态成员 javascript      更新时间:2023-09-26

我正在尝试在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.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;
  //       ... 

那么,这两者之间的主要区别是,在第二个例子中,您可以从构造函数引用静态成员(由于原型声明),而在第一个例子中,您不能?

在这两个示例中,您都可以从构造函数中访问它。区别在于你是否可以通过你的一个对象到达它。

选项:

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

选项B:

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