使用原型模拟静态变量

Emulating static variables using prototype

本文关键字:静态 变量 模拟 原型      更新时间:2023-09-26
function Person() {}
Person.prototype.population = 0;
Person.prototype.constructor = function(name) {
    this.name = name;
    console.log("Name: " + this.name);
    console.log("Population: " + (++this.population) );
}
var p = new Person("Wex");

以下代码似乎不起作用,尽管从逻辑上讲,我觉得它似乎很合理。为什么这不显示名称和人口?

http://jsfiddle.net/zerkms/gvjEF/

var Person = function(name) {
    this.name = name;
    console.log("Name: " + this.name);
    console.log("Population: " + (++Person.population) );
};
Person.population = 0;
var p = new Person("Wex");
var p = new Person("Wex");

只要你想要静态类变量,你需要:

  1. 将其定义为classname.varname
  2. 使用类名使用它,而不是this

试试这个:

function Person() {}
Person.staticProperty = "foo";
var obj = new Person();

staticProperty 在 Person 对象中定义,这是函数。