javascript类中的类变量

javascript类中的类变量,javascript,jquery,Javascript,Jquery,对此的解决方案建议使用John Resig的类实现。此解决方案可满足我的所有需求,除了: 如何在此类中声明一个可从外部访问的公共全局变量 我想建立如下内容: var MyClass = Class.extend({ EVENT_NAME : 'event-name', init : function() { // ... } }); // Now another file can directly r

对此的解决方案建议使用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 );

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

window.globalVar = somevalue
globalVar = somevalue

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

window.globalVar = somevalue
globalVar = somevalue
事实上,老实说,我不确定上述内容如何与
.extend()
配合使用,因为我以前没有实际使用过
extend()
。 然而,
return{name:value}
技术是在对象中公开公共实例方法的一种非常常见的方法。它应该不会花很长时间来测试它,很抱歉我没有机会自己做

事实上,老实说,我不确定上述内容如何与
.extend()
配合使用,因为我以前没有实际使用过
extend()
。 然而,
return{name:value}
技术是在对象中公开公共实例方法的一种非常常见的方法。正确地测试它不会花很长时间,很抱歉我没有机会自己做。

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

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

console.log(MyObject.EVENT_NAME); // No need to instantiate MyObject
然而,在我看来,您似乎将静态类型语言的概念与Javascript更具动态性的内容相混合。为什么要访问尚未创建的对象的成员?

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

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

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

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

Yep,这是我的后备计划。但我更倾向于让它和拥有它的类一起。叶,这是我的后备计划。但我更倾向于将其与“拥有”它的类一起使用。我还将指出,当前您拥有的EVENT_NAME:“EVENT NAME”是一个全局变量,因为前面没有“var”。我还将指出,当前您拥有的EVENT_NAME:“EVENT NAME”是一个全局变量,因为前面没有“var”。原因很多,Javascript中已经有了一些例子:看看Math类上的所有静态成员和方法:Math.PI、Math.round()等等。这只是基本的名称空间,如果你想避免冲突,这是一个非常好的主意。我理解,但您基本上说的是,您希望在定义/创建“类”之前访问它的成员。我需要在类中声明静态字段变量。其他使用MyObject的类需要对其进行各种比较(如果有意义的话)。nickf提到Math.PI是一个很好的例子。原因很多,Javascript中已经有了一些例子:看看Math类上的所有静态成员和方法:Math.PI、Math.round()等等。这只是基本的名称空间,如果你想避免冲突,这是一个非常好的主意。我理解,但您基本上说的是,您希望在定义/创建“类”之前访问它的成员。我需要在类中声明静态字段变量。其他使用MyObject的类需要对其进行各种比较(如果有意义的话)。nickf提到了Math.PI的一个好例子。