在Javascript中创建私有静态函数?

Ash*_*hir 4 javascript oop

我正在使用以下代码创建:私有属性,私有方法,公共属性,公共方法和公共静态属性.

function ClassA() {

    var privateProperty = 'private_default_value';

    var privateMethod = function() {
        console.log("private method executed ...");
    };

    this.publicProperty = 'public_default_value'; 

    this.publicMethod = function() {
        console.log("public method executed ...");
    };

    ClassA.publicStaticProperty = "public_static_default_value";

    // How to create here: ClassA.privateStaticProperty ?

};

var instance = new ClassA();
instance.publicMethod();
console.log(ClassA.publicStaticProperty);
Run Code Online (Sandbox Code Playgroud)

如何在此类中创建私有静态属性?

Den*_*ret 7

这是一个使用IIFE创建构造函数可见范围的解决方案ClassA:

var ClassA = (function(){

    var Constructor = function(){
        var privateProperty = "private_default_value";

        var privateMethod = function() {
            console.log("private method executed ...");
        };

        this.publicProperty = "public_default_value"; 

        this.publicMethod = function() {
            console.log("public method executed ...");
        };
    }
    Constructor.publicStaticProperty = 'public_static_default_value';
    var privateStaticProperty = "private_static_default_value";

    return Constructor;
})();
Run Code Online (Sandbox Code Playgroud)

privateStaticProperty 是"静态的":只有一个属性.

privateStaticProperty 是"私人的":您无法从IIFE外部阅读.