如何解决如何设置对象值等于变量内的对象值
router.get("/images",function(req,res) {
// Sends all available images
let sendFiles = [];
let files = fs.readdirsync(imagePath);
files.forEach(file => {
if (file.includes("jpg") ||
file.includes("jpeg") ||
file.includes("JPEG") ||
file.includes("png") ||
file.includes("PNG")) {
sendFiles.push(file)
}
});
res.send({files: sendFiles});
});
在这个块中:
var myConfig = {
elementID: "Test",cookieName: "myTest",cookieExpiresAfterDays: 1,cookieDomain: ".localhost:3000/",privacyPolicy: "",services: [
{
name: "GoogleAnalytics",default: !0,required: !0,onlyOnce: !0,},],translations: {
GoogleAnalytics: {
description: `<p>CookieDomain: ${cookieDomain}</p>`,title: "Google Analytics",}
};
我需要设置 translations: {
GoogleAnalytics: {
description: `<p>CookieDomain: ${cookieDomain}</p>`,}
但它返回一个错误
未捕获的引用错误:cookieDomain 未定义
当我尝试 cookieDomain: cookieDomain
时,它会打印 undefined。
如何访问正确的值?
解决方法
这里有两种解决方案
-
在初始化
cookieDomain
对象之前在同一个文件中定义myConfig
变量 -
将
cookieDomain
值作为参数传递,因此myConfig
对象将是
var myConfig = {
elementID: "Test",cookieName: "myTest",cookieExpiresAfterDays: 1,cookieDomain: ".localhost:3000/",privacyPolicy: "",services: [
{
name: "GoogleAnalytics",default: !0,required: !0,onlyOnce: !0,},],translations: ({cookieDomain}) => {
GoogleAnalytics: {
description: `<p>CookieDomain: ${cookieDomain}</p>`,title: "Google Analytics",}
};
然后你需要调用 translations
块
myConfig.translations({cookieDomain: 'some value here'});
,
在这种情况下,您可以使用从 myConfig
变量读取的 getter:
var myConfig = {
elementID: "Test",translations: {
GoogleAnalytics: {
get description(){
return `<p>CookieDomain: ${myConfig.cookieDomain}</p>`
},}
};
如果 myConfig
的值可能发生变化,您可以使用嵌套的惰性 getter:
var myConfig = {
elementID: "Test",//We must use a getter here,so the outer object is available through `this`
get translations() {
delete this.translations
const outerObj = this
return this.translations = {
GoogleAnalytics: {
get description(){
return `<p>CookieDomain: ${outerObj.cookieDomain}</p>`
},}
}
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。