在Javascript单例中使用数组成员初始化对象成员的属性
我用Javascript声明了一个“singleton”类,如下所示:在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",
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个名声,可能