javascript 对象文字使用它自己的字段

2023-11-29

我想创建一个包含特定组件的整个配置的对象。我也想这样:

var ObjectConfig = {
    fieldKeys : {
        name: "Obj. name",
        state: "Obj. state",
        color: "Obj. color"
    },
    templates : {
        basicTemplate :  [ ObjectConfig.fieldKeys.name, ObjectConfig.fieldKeys.state ],
        altTemplate : [ ObjectConfig.fieldKeys.name, ObjectConfig.fieldKeys.color ]
    }
}

但这以正确的方式去做——它不起作用。我怎样才能实现我的目标?

编辑: 抱歉,我是匆忙手写的,这就是语法错误的来源。现在是正确的了。我得到的错误是Uncaught TypeError: Cannot read property 'fieldKeys' of undefined。我想这样做是不可能的——那么最好的选择是什么?


你的问题是该对象是根据文字构造的before它被分配给ObjectConfig多变的。因此,访问ObjectConfig.fieldKeys文字内部会导致错误。

最好的解决方案是仅构造第一个对象,然后按顺序添加更多属性:

var ObjectConfig = {
    fieldKeys: {
        name: "Obj. name",
        state: "Obj. state",
        color: "Obj. color"
    }
};
ObjectConfig.templates = {
    basicTemplate:  [ ObjectConfig.fieldKeys.name, ObjectConfig.fieldKeys.state ],
    altTemplate: [ ObjectConfig.fieldKeys.name, ObjectConfig.fieldKeys.color ]
};

另一种(较短的)方法是为键对象添加一个额外的变量,该变量在构造模板对象之前分配:

var keys, ObjectConfig = {
    fieldKeys: keys = {
        name: "Obj. name",
        state: "Obj. state",
        color: "Obj. color"
    },
    templates: {
        basicTemplate: [ keys.name, keys.state ],
        altTemplate: [ keys.name, keys.color ]
    }
};

要解决全局范围内的额外变量,您可以使用IEFE。更具可读性的解决方案可能如下所示:

var ObjectConfig = (function() {
    var keys = {
        name: "Obj. name",
        state: "Obj. state",
        color: "Obj. color"
    };
    return {
        fieldKeys: keys,
        templates: {
            basicTemplate: [ keys.name, keys.state ],
            altTemplate: [ keys.name, keys.color ]
        }
    };
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 对象文字使用它自己的字段 的相关文章

随机推荐

  • Fortran 中不区分大小写的字符串比较

    尽管 Fortran 不区分大小写 但我观察到使用以下命令比较字符串时情况并非如此if查看 当然 用户应该意识到这一点 然而 Fortran 不区分大小写 我潜意识里希望同样适用于字符串检查 实现不区分大小写的字符串比较的有效方法是什么 这
  • ld 在 OSX Leopard 上找不到 X11 库

    我有一个在 Linux 上运行的非常基本的 X11 应用程序 我试图在 OSX 10 5 8 下编译它 我已经安装了X11和X11 SDK 并修改了makefile如下 CFLAGS L usr X11 lib I usr X11 incl
  • 如何从DataFrame中获取Array[Seq[String]]?

    如何通过DataFrame cc into Array Seq String val factors ccCols split val cc dataset select factors head factors tail 我尝试过这种方式
  • 扩展 Typescript 中的内置类型

    我有以下结构 project types global d ts string d ts wdio d ts src Models Resources Components Extensions string ts tsconfig jso
  • 使用 CURRENT_TIMESTAMP 的 Rails 5.2 和 Active Record 迁移

    我有一些属性需要有默认值 我已经设置了迁移以在数据库中设置默认值 如下所示 class AddDefaultsToModel lt ActiveRecord Migration 5 2 def change change column po
  • 如何使用 Perl 动态获取 Web 内容?

    这有点棘手 我猜这个网页使用某种 AJAX 来根据搜索查询提取内容 当我在 Perl 中使用 get 获取页面时 它会获取 php html 后面的脚本代码 但不会获取手动搜索查询时显示的结果 我需要能够获取结果页面的内容 无论如何 在 P
  • iOS 中的视频编辑问题

    我目前正在开发一个 iOS 应用程序 它可以合并所需数量的视频 一旦用户点击按钮来合并视频 视频就会被合并 然后使用 AVPlayer 进行播放 如下所示 CMTime nextClipStartTime kCMTimeZero NSInt
  • fetchUuidWithSdp 始终给出缓存的 UUID

    我正在编写一个应用程序 其中我必须在选定的设备上进行服务发现 但每当我执行 fetchUuid 时 它总是为我提供远程设备上缓存的 UUID 这就是我正在尝试的 public boolean UUIDsearch BluetoothDevi
  • Google Cloud Storage Python list_blobs() 不打印对象列表

    我是 Python 和 Google Cloud Storage 新手 我正在编写一个 python 脚本 以使用 Google Cloud Python 客户端库从 Google Cloud Storage 存储桶获取文件列表 而 Buc
  • MvvmCross UITextField 自定义绑定

    所以我试图在 MvvmCross 中实现 UITextField 的自定义绑定 几乎遵循以下方式绑定软件键盘上的 GO 键 即尝试绑定一个文本字段 以便在点击键盘上的 完成 按钮时自动触发事件 因此绑定到ShouldReturn 我还需要绑
  • Neo4j“没有依赖项满足类型类 org.neo4j.kernel.api.index.SchemaIndexProvider”

    Neo4j 社区 2 3 3 Linux Ubuntu 14 04 尝试运行一个使用 Kafka 主题的 Java 应用程序 在查询 Neo4j 时处理其消息 并将它们写入另一个 Kafka 主题 hduser ubuntu java ja
  • GridView - 在空数据源上显示标题

    在 C 中 即使数据源为空 如何仍然显示 gridview 的标题 我不会自动生成列 因为它们都是预定义的 目前我正在做的事情如下 从存储过程中获取 DataTable 然后设置 gridview 的 DataSource 然后调用 Dat
  • 将 css、js 或其他内容从部分视图添加到视图头

    我发现了一些与此相关的问题 但通常有很多不同的答案 而且它们看起来都非常混乱和复杂 如果这就是需要做的 那么好吧 我最好坐下来解决它 我想知道最简单 最有效的方法是将内容从部分视图添加到您的头脑中 我需要这样做的原因是我需要在每个页面上使用
  • 当所有 Readline on('line') 回调完成时退出流程

    我有一个 Node v10 14 1 程序 它使用以下命令逐行读取 CSV 文件读取线接口 My on line is an async回调执行一些从数据库读 写的操作 因此我使用async await来处理承诺 该程序感兴趣的代码块的简短
  • 更新oracle中的json值

    我在表中有一个列以 json 格式存储数据 例如 柱子 select jsoncol from table 它给 y 4 n 0 default 4 当我尝试时 select json value jsoncol n from table
  • 记录集过滤器的问题

    我在旧版 ASP Classic 代码中的 ADO 记录集上使用筛选器时遇到问题 并且我试图了解我想要执行的操作是否不受支持 或者我是否只是做错了 我有一个项目记录集 它们的状态为 1 活动 或 0 非活动 以及一个可选的 End Date
  • 算术赋值运算符 - 左侧仅计算一次

    正如标题所说 我在一些C讲义中发现了这样一句话 我无法发明任何例子来证明这句话 在我看来 每个赋值操作都会被评估一次 因为当我们希望它被评估多次时 我们会放入一个循环中 那我还缺少什么呢 我已经搜索过 但在这里找不到答案 C says C9
  • 删除Python中所有子进程的输出而无需访问代码

    在Python中我正在使用 sys stdout None 在一些我无法控制的电话之前 这些调用可能会调用一些写入标准输出的子进程 如何避免此子进程调用写入标准输出 同样 我不拥有调用子流程的代码的所有权 看来 subprocess Pop
  • Java中两个图像之间的碰撞检测

    我正在编写的游戏中显示了两个角色 玩家和敌人 定义如下 public void player Graphics g g drawImage plimg x y this public void enemy Graphics g g draw
  • javascript 对象文字使用它自己的字段

    我想创建一个包含特定组件的整个配置的对象 我也想这样 var ObjectConfig fieldKeys name Obj name state Obj state color Obj color templates basicTempl