javascript:如何访问静态属性

Jea*_*eri 5 javascript static properties

我想使用实例访问静态属性.像这样的东西

function User(){
    console.log('Constructor: property1=' + this.constructor.property1) ;
}
User.prototype = {
    test: function() {
        console.log('test: property1=' + this.constructor.property1) ;
    }
}    
User.property1 = 10 ;   // STATIC PROPERTY

var inst = new User() ;
inst.test() ;
Run Code Online (Sandbox Code Playgroud)

这是jsfiddle中的相同代码

在我的情况下,我不知道实例属于哪个类,所以我尝试使用实例'constructor'属性访问静态属性,但没有成功:(这可能吗?

Ber*_*rgi 5

所以我尝试使用实例的'constructor'属性访问static属性

这就是问题所在,您的实例没有constructor属性-您已经覆盖了整个.prototype对象及其默认属性。相反,使用

User.prototype.test = function() {
    console.log('test: property1=' + this.constructor.property1) ;
};
Run Code Online (Sandbox Code Playgroud)

而且您也可以只使用User.property1而不是通过绕行this.constructor。另外,您不能确保可能要在其上调用此方法的所有实例都constructor指向其属性User-因此更好地直接和显式访问它。

  • @AlanKis:直接在构造函数上,例如在这里User.property1。 (2认同)