如何返回对象的所有属性及其值,包括可迭代的,自定义的和继承的
How to return all properties and their values of an object including iterable ones, custom ones and inherited ones?
到目前为止,我学到了:
1) for
循环,我可以使用它来迭代对象中的索引,例如具有数字索引的键的数组。
2) for..in
循环为我提供了可迭代和自定义属性以及继承属性。但是,它忽略了值未定义的属性。
var array = [ 'Apples', , 'Pear' ];
array.newFn = function () { };
Array.prototype.anotherFn = function() { };
array.foo = bar;
for (var prop in array)
console.log(prop);
将省略索引1
,因为它的值是undefined
。
它将遍历newFn
、anotherFn
和foo
。
3) for..of
迭代值而不是键。不同之处在于,它只迭代所有可迭代属性,忽略自定义属性和从原型链继承的属性。但是,在这样做时,包含那些属性键或属性值或两者都具有值undefined
的值。同样,它只对对象的可迭代的、自己的属性包含这个。
是否存在一个循环结构来迭代
- 所有可迭代属性;和
- 的定制;和
- 那些从原型一直继承下来的?
遍历键?一旦我有了键,我就可以得到值了。
如果没有一个内置的循环结构,必须有一些反射属性在Object
命名keys
或一些这样的,让我窥探到它?
最简单的方法是使用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);
相关文章:
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- 如何在我传递给视图的ViewModel集合中获得jQuery可选对象的值,以作为有序列表进行迭代
- 为什么字符串在 ES2015 中是可迭代对象
- 迭代器和可迭代之间的区别
- 如何在 JavaScript 中动态地编写可迭代的函数数组
- 将可迭代的 Javascript 转换为数组
- ng递归地包括整个index.html;达到“10$digest()迭代”;
- Javascript - 创建可迭代的抽象层
- 信息可视化不迭代根节点
- 将 ES6 可迭代转换为数组
- arguments对象在ES6中应该是可迭代的
- ECMAScript 2015,可迭代的析构函数表达式
- 对象文本内部的工厂模式,以实现可迭代性和反射性
- 如何返回对象的所有属性及其值,包括可迭代的,自定义的和继承的
- ES6可迭代对象的JSDoc类型名称
- 在不检查element .length的情况下,将可迭代元素或不可迭代元素扩展为数组
- 为什么我们要定义符号.[Symbol]的迭代器.迭代器)?javascript中的可迭代对象
- 如何让TypeScript在ES6到ES5中构建可迭代内容
- 打字稿找不到名称“可迭代迭代器”
- 返回可迭代与 Resolve in Promise.all