javascript类中的类变量

时间:2009-04-20 10:36:20

标签: javascript jquery

这个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 个答案:

答案 0 :(得分:4)

执行您想要做的事情的“唯一”方法是使用函数作为“类”。通过这种方式,您可以声明可以访问其公共“静态”成员的“类”。像这样:

function MyObject() {
  // constructor stuff here
}
MyObject.EVENT_NAME = "event_name";

console.log(MyObject.EVENT_NAME); // No need to instantiate MyObject

然而,在我看来,你喜欢将静态类型语言的概念与Javascript更具动态性的东西混合在一起。为什么要访问尚未创建的对象的成员?

答案 1 :(得分:1)

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

window.globalVar = somevalue
globalVar = somevalue

答案 2 :(得分:0)

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 }技术是在对象中公开公共实例方法的一种非常常见的方法。不应该花很长时间才能正确测试它,对不起我没有机会亲自去做。