我知道 Javascript 不像传统的 OOP 语言那样有类,像下面这样的“类”定义只是一个函数对象,可以与 new
关键词:
function MyClass(){
this.a = function(){ /* Do something */ }; // Public function
function b(){ /* Do something */ }; // Private function
}
我想知道的是,如果我定义一个全局对象(以避免污染命名空间)并在该对象中定义我的类,我能否以比这更好的方式为我的类定义一个静态方法:
var MyObject = {
MyClass: function(){
this.a = function(){ /* Do something */ }; // Public function
function b(){ /* Do something */ }; // Private function
},
}
MyObject.MyClass.MyStaticMethod = function(){ /* Do something */ };
我在考虑在 MyClass
函数范围内定义 MyStaticMethod
- 这可能吗?
最佳答案
您可以这样做:
var MyObject = {
MyClass: function(){
this.a = function(){ /* Do instance-y stuff */ };
MyClass.MyStaticMethod = function(){ /* Do static-y stuff */ };
}
}
但我认为这是个坏主意。总的来说,我认为在构造函数之外同时定义静态方法和实例方法是更好的做法(因为它更具可读性)。如:
function MyClass() { /* Do initialization stuff */ }
MyClass.prototype.a = function() { /* Do instance-y stuff */ }
MyClass.MyStaticMethod = function() { /* Do static-y stuff */ }
关于全局对象中定义的类中的 Javascript 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10172144/