gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:33:01 26 4
gpt4 key购买 nike

我在 Javascript 中有一个“单例”类,声明如下:

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
}
}

但这不起作用,因为它找不到 values尝试初始化 functionParamValues 的“Func1”和“Func2”属性时的数组目的。我还尝试使用 this.values而不仅仅是values但最终结果是 null所以我假设它正在尝试获取 values functionParamValues的属性(property)对象,而不是父对象 ExpressionValidator .

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

最佳答案

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

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

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

关于javascript - 在Javascript单例中用数组成员初始化对象成员的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com