代码之家  ›  专栏  ›  技术社区  ›  Hady

javascript类中的类变量

  •  0
  • Hady  · 技术社区  · 17 年前

    question 建议使用John Resig的类实现。此解决方案可满足我的所有需求,除了:

    如何在此类中声明一个可从外部访问的公共全局变量?

        var MyClass = Class.extend({
    
            EVENT_NAME : 'event-name',
    
            init : function() {
                // ...
            }
    
        });
    
    // Now another file can directly read this value without creating the class object
    console.log( MyClass.EVENT_NAME );
    
    3 回复  |  直到 9 年前
        1
  •  5
  •   Helgi    17 年前

    做你想做的事情的“唯一”方法是使用函数作为“类”。这样,您就声明了一个“类”,可以访问其公共“静态”成员。大概是这样的:

    function MyObject() {
      // constructor stuff here
    }
    MyObject.EVENT_NAME = "event_name";
    
    console.log(MyObject.EVENT_NAME); // No need to instantiate MyObject
    

    然而,在我看来,您似乎将静态类型语言的概念与Javascript更具动态性的内容相混合。为什么要访问尚未创建的对象的成员?

        2
  •  1
  •   KooiInc    17 年前

    在窗口上下文中声明或不使用'var'关键字:

    window.globalVar = somevalue
    globalVar = somevalue
    
        3
  •  0
  •   Steerpike    17 年前
    var MyClass = Class.extend({
    
            EVENT_NAME : 'event-name',
    
            init : function() {
                // ...
            }
            return {
                event_name: function() { return EVENT_NAME; }
            }
    
        });
        console.log( MyClass.event_name );
    

    事实上,老实说,我不确定上面的内容将如何使用 .extend() 因为我实际上没有用过 extend() 之前 return { name:value }