繁体   English   中英

全局对象内定义的类中的Javascript静态方法

[英]Javascript static method in class defined inside global object

我知道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 */ }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM