Javascript 使用prototype模拟静态变量

Javascript 使用prototype模拟静态变量,javascript,Javascript,下面的代码似乎不起作用,尽管从逻辑上讲,我觉得它似乎是合理的。为什么不显示姓名和人口? 只要您想要静态类变量,您就需要: 将其定义为classname.varname 使用类名,而不是this ​ 只要您想要静态类变量,您就需要: 将其定义为classname.varname 使用类名,而不是this ​ 试试这个: var Person = function(name) { this.name = name; console.log("Name: " + this.name)

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

只要您想要静态类变量,您就需要:

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

    只要您想要静态类变量,您就需要:

  • 将其定义为
    classname.varname
  • 使用类名,而不是
    this
    试试这个:

    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");
    
    staticProperty是在Person对象中定义的,该对象是函数。

    请尝试以下操作:

    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");
    

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

    你说得对。下次要礼貌一点。祝您愉快。除了使用
    this.constructor.prototype.population
    ,还有什么方法可以访问
    Person.prototype.population
    ?静态变量应该通过
    classname.varname
    访问,而不使用任何
    this
    ——这就是我要说的。这有什么不同?@Wex:没有什么大的区别,但是添加
    prototype
    对于静态变量没有意义。只要它是静态的-它属于类,而不是您所说的实例。下次要礼貌一点。祝您愉快。除了使用
    this.constructor.prototype.population
    ,还有什么方法可以访问
    Person.prototype.population
    ?静态变量应该通过
    classname.varname
    访问,而不使用任何
    this
    ——这就是我要说的。这有什么不同?@Wex:没有什么大的区别,但是添加
    prototype
    对于静态变量没有意义。只要它是静态的,它就属于类,而不是实例
    function Person() {}
    Person.staticProperty = "foo";
    var obj = new Person();