微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何设置对象值等于变量内的对象值

如何解决如何设置对象值等于变量内的对象值

我有一个变量设置为一个对象:

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。

如何访问正确的值?

解决方法

这里有两种解决方案

  1. 在初始化cookieDomain对象之前在同一个文件中定义myConfig变量

  2. 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 举报,一经查实,本站将立刻删除。