以下代码
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。问题不在于如何编写正确的迭代器函数,我知道我还没有这样做。
答案 0 :(得分:2)
Symbol.iterator是一个符号,你不能像那样列出它们,你必须使用Object.getOwnPropertySymbols(your_object)来列出它们。
对于... in ...循环确实列出了对象的属性,但符号是一种不同类型的野兽,它们需要特殊处理。