javascript - "for var in"访问 JS 对象返回所有内容*但*自己的属性?

标签 javascript

我在这里不知所措。谁能解释以下控制台输出是如何可能的?为什么在使用 for var p in 进行迭代时 label_multilingual_key 没有显示?

    > Object.getOwnPropertyNames(design_element)
    (6) ["label_multilanguage_key", "value", "display_priority", "name", "help_text", "hidden"]

    > for (var p in design_element) console.log(p);
    VM226:1 value_type
    VM226:1 element_type
    VM226:1 requirement_setting
    VM226:1 multiple_values_setting
    VM226:1 user_enabled_setting
    VM226:1 grid_size_setting
    VM226:1 show_to_users
    VM226:1 disable_label
    undefined

    > console.log(design_element)
    VM262:1 
    {label_multilanguage_key: "&&mlkey_enable_filtering_for_id", value: false, display_priority: 6, name: "enable_filtering_for_id", help_text: "&&mlkey_proto_enable_filtering_help_text", …}
    display_priority: 6
    help_text: "&&mlkey_proto_enable_filtering_help_text"
    hidden: true
    label_multilanguage_key: "&&mlkey_enable_filtering_for_id"
    name: "enable_filtering_for_id"
    value: false
    __proto__: Object

    typeof(design_element)
    "object"

回复:如何创建这些对象的问题 - 需要一段时间才能确认,但它应该使用类似的调用来创建

Object.create(element_structure.StaticTextField,{label_multilanguage_key:{value:ML_KEYS.first_name},name:{value:"first_name"}})

如果是这样的话,不可枚举的行为是否可能?或者对象初始化中是否存在明显的错误?

最佳答案

Was there obviously a screw-up in the object initialization?

是的,使用 Object.create使用属性描述符(如 Object.defineProperties )创建 non-enumerable properties by default 。我建议使用Object.assign如果您不想做任何特殊的事情,则可以使用第二个参数:

Object.assign(Object.create(element_structure.StaticTextField), {
    label_multilanguage_key: ML_KEYS.first_name,
    name: "first_name"
});

关于javascript - "for var in"访问 JS 对象返回所有内容*但*自己的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330620/

相关文章:

javascript - 获取 Web 服务器时间并将其显示在网页上的正确方法

javascript - 如何为 JavaScript 附加 DOM 元素应用类似 live() 的功能

javascript - 如何在父 JS 之外的子函数中使用 THIS

javascript - 如何用 React 删除一个列表项(函数组件)

JavaScript:事件对象

javascript - 内部联接返回单行而不是多行

javascript - 根据表单内的选择菜单值计算值

javascript - Node : TypeError: Cannot read property 'on' of undefined

javascript - 需要使用javascript降低图像的高度

javascript - Backbone 集合不会填充