我知道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 */ };
我正在考虑在MyStaticMethod
函数范围内定义MyClass
的方法 - 这可能吗?
答案 0 :(得分:0)
你可以这样做:
var MyObject = {
MyClass: function(){
this.a = function(){ /* Do instance-y stuff */ };
MyClass.MyStaticMethod = function(){ /* Do static-y stuff */ };
}
}
但我认为这是一个坏主意。一般来说,我认为定义构造函数的静态和实例方法OUTSIDE是更好的做法(因为它更具可读性)。如:
function MyClass() { /* Do initialization stuff */ }
MyClass.prototype.a = function() { /* Do instance-y stuff */ }
MyClass.MyStaticMethod = function() { /* Do static-y stuff */ }