在Javascript单例中使用数组成员初始化对象成员的属性

在Javascript单例中使用数组成员初始化对象成员的属性,javascript,arrays,object,singleton,Javascript,Arrays,Object,Singleton,我用Javascript声明了一个“singleton”类,如下所示: ExpressionValidator = { // A map of function names to the enumerated values that can be passed to it. functionParamValues: { "Func1": ["value1", "value2", "value3"], "Func2": ["value1",

我用Javascript声明了一个“singleton”类,如下所示:

ExpressionValidator =
{
    // A map of function names to the enumerated values that can be passed to it.
    functionParamValues:
    {
        "Func1": ["value1", "value2", "value3"],
        "Func2": ["value1", "value2", "value3"]
    }
}
我想以某种方式定义
[“value1”、“value2”、“value3”]
的数组,这样它就不必在需要的任何地方复制,但我不知道如何使它工作

我目前的想法是这样的:

ExpressionValidator =
{
    // An array of possible values to use as parameters to certain functions.
    values:
    [
        "value1",
        "value2",
        "value3"
    ],


    // A map of function names to the enumerated values that can be passed to it.
    functionParamValues:
    {
        "Func1": values
        "Func2": values
    }
}
但这不起作用,因为它在尝试初始化
functionParamValues
对象的“Func1”和“Func2”属性时找不到
values
数组。我还尝试使用
this.values
而不仅仅是
values
,但结果是
null
,因此我假设它试图获取
functionParamValues
对象的
values
属性,而不是父
ExpressionValidator


我知道这可以通过将
数组移到
ExpressionValidator
定义之外来解决,但如果可能的话,我希望将其保留在内部,这样它就不会与全局命名空间中的任何内容冲突。只有在没有其他方法的情况下,这才应该是最后的手段。

当编写这样的文本时,没有任何函数作用域来设置值
,您必须将所有内容包装在iLife中才能获得值。
做你想做的事情的更好模式是

var ExpressionValidator = {};

ExpressionValidator.values = [
    "value1",
    "value2",
    "value3"
];

ExpressionValidator.functionParamValues = {
    Func1: ExpressionValidator.values,
    Func2: ExpressionValidator.values
}

如果你有实际的功能,那就不同了

var ExpressionValidator = {
    values: [
        "value1",
        "value2",
        "value3"
    ],
    Func1: function() {
        console.log( this.values );
    },
    Func2: function() {
        console.log( this.values );
    }
}

如果不希望数组位于全局范围内,请在闭包内定义数组

var ExpressionValidator = (function() {
    var values = [ 
        'value1',
        'value2',
        'value3'
    ];       

    return {
        values: values,
        functionParamValues: {
            Func1: values,
            Func2: values
        }
    };
})();

对我来说,“类”有一些方法。您只有一个普通的数据对象。这只是一个简单的示例。我在示例中遗漏了很多函数和其他内容,因为这对于这个问题并不重要。这似乎是一个重复的问题,现在我已经看到了你链接的另一个。有没有办法把这个问题标记为重复的?我不知道在这种情况下该怎么办。当5个人。你,有141个名声,可能