gpt4 book ai didi

javascript - 在显示模块模式中,您可以公开一个散列属性吗?

转载 作者:行者123 更新时间:2023-11-30 12:54:05 25 4
gpt4 key购买 nike

所以我有一个标准的揭示模块模式,而不是公开所有我的配置设置,我只想公开这些配置的一小部分。如果有解决方法或我遗漏的东西,这是行不通的,很好奇。

   var rmp = function(){
var config = {
someValue = "I like p&j sandwiches",
anotherVal = {
a: 'somevalue'
}
}

var func1 = function(){
// do some stuff

}

return {
func1: func1,
config.someValue: someValue // <-- doesn't work
config[someValue] : someValue // <-- doesn't work
config : config // <-- works
}

}

似乎不允许散列的属性单独使用。现在,当然,如果我创建一个只返回该值的函数,那么它就可以工作了。但我不想为此创建另一个函数。

      var showme = function(){
return config.someValue;
}


return {
func1: func1,
showme: showme
}

最佳答案

像这样的事情怎么样:

return {
func1: func1,
someValue: config.someValue
}

现在您的 config 对象不会向公众公开,除了它的 someValue 属性。

解释

这是您的问题。首先,您的代码中存在语法错误。 config.someValue: someValueconfig[someValue] : someValue 之后都缺少一个逗号

其次,例如在 config.someValue: someValue 中,您指的是 someValue - 在右侧 - 它未在您的脚本中定义。正确的方法是 config.someValue 而不是单独的 someValue

第三,我认为您对 javascript 对象和显示模块设计模式的工作方式有一些误解。当您编写 return 部分时,您不需要使用属性名称将它们公开给公众。例如,您可以编写 whateverFunc: func1,它会工作得很好。你在那里尝试做的是使用例如 config.someValueconfig[someValue],它们可以工作但与你的没有任何关系/访问实际的 config 对象。

为了更清楚地想象以下 return 对象:

return {
doSomething: func1,
doAnotherThing: function () {
return config.someValue;
},
getSomeValue: config.anotherVal
}

因此,如您所见,对象属性 - 左侧 - 只是一个名称,用于显示分配给它们的值 - 右侧。

关于javascript - 在显示模块模式中,您可以公开一个散列属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887752/

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