commonJS - 它有公共财产吗?

时间:2013-04-03 01:47:06

标签: commonjs

我有一篇关于commonJS - foun

讨论的有趣读物

http://smorgasbork.com/index.php?option=com_content&view=article&id=132

但是,它没有回答我的主要问题 - 是否可以在通用commonJS对象中拥有公共成员?

也就是说,不是创建了整个花哨的对象(教程会详细介绍其中的详细信息),而是通用样式。

如果声明,如果它是静态的等等 - 任何人都知道吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,那么

function MyClass(options) {
    // something like a constructor in java
    this.myProperty = 'foo'; // instance property
}

MyClass.prototype.doSometing(what)
    // this is an instance method (because of prototype, this is generated for each instance, can have a reference to `this`)
}

MyClass.doSomethingElse(andWhat)
    // this is a static method, which is not available for an instantiated object (only via MyClass.doSometingElse();)
}

MyClass.staticProperty = 'bar'; // static property;

module.exports = MyClass;

我希望这是你想知道的事情。它们都是公开的。不可能创建私有静态属性,因为这些属性始终是公共的。私有实例属性通常不是私有属性或不属于不动产。它只是一个局部变量,只能在定义它的函数内访问。如果您可以通过this访问它,那么它也是公开的。


off topic:在导出此模块之前,您可以创建一个实例并导出实例。这会在Java中创建类似单例的东西。因此,每当您请求此模块时,您将获得相同的实例:

MyClass = new MyClass();
module.exports = MyClass;  

但是这将删除所有静态引用,因为在这种情况下MyClass将是一个实例。