当前位置: 首页 > 知识库问答 >
问题:

如何返回对象的所有属性及其值,包括可重用属性、自定义属性和继承属性?

百里胜泫
2023-03-14

到目前为止,我已经学会了:

1) 对于循环,我可以使用它来迭代对象中的索引,例如具有数字索引键的数组。

2) 的。。在中,循环为我提供了iterable和custom属性以及继承属性。但是,它忽略了值未定义的属性。

对于例如。

var array = [ 'Apples', , 'Pear' ];

array.newFn = function () { };
Array.prototype.anotherFn = function() { };
array.foo = bar;

for (var prop in array)
  console.log(prop);

将省略索引1,因为它的值是未定义的

但是,它将迭代newFn另一个fnfoo

3) 的。。of对值而不是键进行迭代。不同之处在于,它只迭代所有iterable属性,忽略了自定义属性,也忽略了从原型链继承的属性。但是,在这样做时,包括那些属性键或属性值或两者都具有未定义值的值。同样,它仅针对对象的可重用、自身属性包含此项。

是否存在一个循环构造,该构造可以迭代:

  1. 所有可迭代属性;和
  2. 定制的;和
  3. 那些从原型机一路下来的惰性?

然后迭代关键字?一旦我有了钥匙,我就可以得到值。

如果没有内置的循环构造,那么名为keysObject上一定有一些反射属性,或者一些让我可以窥视的属性?

共有1个答案

赖浩荡
2023-03-14

最简单的方法是使用void将索引设置为undefined。您也可以使用null

var array = [ 'Apples', void 0, 'Pear' ];

array.newFn = function () { };
Array.prototype.anotherFn = function() { };
array.foo = "bar";

for (var prop in array)
  console.log(prop);
 类似资料:
  • 在OWL中,不可伸缩属性的子属性也是不可伸缩的吗?同样,非对称属性的子属性也是非对称的吗? 从逻辑上讲,它们应该是这样的,但我在OWL文档中找不到任何说明这种情况的内容。 考虑以下示例: 基于此本体,不允许出现以下情况,因为的父项是不可伸缩的: 但是是否也隐含地不反射性呢?换句话说,这是否也被禁止: 如果你认为一个属性是一组连接成对的点的箭头,那么不可反身仅仅意味着没有在同一个点开始和结束的箭头。

  • 本文向大家介绍综合属性和继承属性之间的区别,包括了综合属性和继承属性之间的区别的使用技巧和注意事项,需要的朋友参考一下 合成属性和继承属性都是语言语义的一部分,该语言为其构造提供含义,例如标记和语法结构。语义有助于解释符号,符号的类型及其相互之间的关系,其分析可判断源程序中构造的语法结构是否衍生出任何含义。现在,基于属性的特征,我们可以区分综合属性和继承属性 以下是合成属性和继承属性之间的重要区别

  • 问题内容: 因为这是有关设计的问题,所以我将先说一下我拥有和想要的东西。 我有 一个使用合成的设计。一个对象包含和一个对象(此示例中为定制对象)。这2个中的每个都有定义它们的自己的数据。这是代码示例: 我也有一个需要代表许多单元格的GUI,我已经写了如何做(如何使用颜色,大小等在屏幕上创建我想要的东西)。它包括诸如CellRepresentation,ShapeRepresentation和Bac

  • 试图向OpenLDAP添加一个新属性,但总是碰壁。我正在尝试向架构添加ipPhone属性,因为我不能在默认的telephoneNumber属性中包含*数字。 下面是我的LDIF文件,用于创建新属性并将其与objectClass类似。 我已经测试和谷歌了几个小时,但一直无法解决这个问题或找出我错过了什么!

  • 我有一个函数,它将调用外部资源(例如REST)并根据结果返回JSON对象。 例如,如果我发送一个POST并且它可以工作,我需要对象是: 但是当它由于某种原因失败时,我不想要id(因为它将是未定义的)。类似于: 所以只有一个处理方法: 当一切正常时,它会工作,但当它失败时,它会呈现: 有没有办法使“id”成为可选的,这取决于它是否被定义?类似于: 那么在“未定义”中,它将被忽略?我知道我可以只取这个

  • 本文向大家介绍vue中的循环对象属性和属性值用法,包括了vue中的循环对象属性和属性值用法的使用技巧和注意事项,需要的朋友参考一下 v-for除了可以循环数组,还可以循环对象。 例子: 结果: 补充知识:Vue控制路由滚动行为 跳转路由时,要求跳转到指定路由的某个地方,可以使用scrollBehavior方法控制。 用法: scrollBehavior(to,from,savedPosition)