【问题标题】:Javascript static method in class defined inside global object在全局对象内定义的类中的 Javascript 静态方法
【发布时间】:2012-04-16 10:06:01
【问题描述】:

我知道 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 的事情 - 这可能吗?

【问题讨论】:

    标签: javascript oop class static-methods


    【解决方案1】:

    可以这样做:

    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 */ }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 2012-09-03
      相关资源
      最近更新 更多