如何遍历ALL属性inc。例如[Symbol.iterator]

时间:2016-10-13 09:38:42

标签: javascript iterator

以下代码

a = {
    b () {return 3;},
    [Symbol.iterator] () {return 4;}
};

console.log (a ['b']);
console.log (a [Symbol.iterator]);

console.log (111);
for (var attrib in a) {
    console.log (attrib);
    console.log (a [attrib]);
}
console.log (222);

打印

function b() {return 3;}
function () {return 4;}
111
b
function b() {return 3;}
222

为什么是第二个函数,返回4未在for循环中打印。 如何创建一个打印所有属性的for循环,包括[Symbol.iterator]等特殊属性?

N.B。问题不在于如何编写正确的迭代器函数,我知道我还没有这样做。

1 个答案:

答案 0 :(得分:2)

Symbol.iterator是一个符号,你不能像那样列出它们,你必须使用Object.getOwnPropertySymbols(your_object)来列出它们。

对于... in ...循环确实列出了对象的属性,但符号是一种不同类型的野兽,它们需要特殊处理。