javascript - 在 Javascript 中创建私有(private)静态函数?

标签 javascript oop

我使用以下代码创建:私有(private)属性、私有(private)方法、公共(public)属性、公共(public)方法和公共(public)静态属性。

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

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

最佳答案

这是一个使用 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;
})();

privateStaticProperty 是“静态的”:只有一个属性。

privateStaticProperty 是“私有(private)的”:您无法从 IIFE 外部读取它。

关于javascript - 在 Javascript 中创建私有(private)静态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452025/

相关文章:

javascript - Angular1.5 的哪个路由器?

javascript - 打开没有地址栏和标题的javascript弹出窗口,高度和宽度根据屏幕分辨率设置为百分比

javascript棋盘游戏棋子放置

javascript - Meteor JS - 任何访问者都可以更改集合(mongodb)(不安全)

c++ - 为什么我可以通过 SubBase 类的公开继承方法打印出 Base 类的私有(private)继承成员?

oop - 在类中定义 ID 属性是一种好的做法吗?

javascript - 严格模式 ("use strict";) 是如何被函数继承的?

c++ - 如何使用 STL 实现自定义字符串类?

java - Java 类和包的设计

php - 为什么 PHP 需要显式引用 "$this"才能调用成员函数?