2012-04-16 37 views
2

我知道Javascript没有与传统的OOP语言一样的类,并且像下面这样的“类”定义仅仅是一个可以使用的函数对象与new关键字:在全局对象中定义的类中的Javascript静态方法

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的方向行事 - 这可能吗?

回答

0

可以做到这一点:

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 */ } 
相关问题