2016-10-13 3 views
1

コードすべての属性incを反復処理する方法例えば【Symbol.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を返し、第二の機能です。 [Symbol.iterator]のような特別なものを含めて、すべての属性が印刷されるforループを作成するにはどうすればよいですか?

N.B.問題は正しいイテレーター関数を書く方法ではなく、私はそれをしていないことを知っています。

+1

Symbol.iteratorは* Symbol *であり、そのようにリストすることはできません。Object.getOwnPropertySymbols(your_object)を使用してリストする必要があります。 – Azamantes

+0

大変ありがとうございます。私はあなたにそれを信用できるように答えとして再提出してください! –

答えて

2

Symbol.iteratorはSymbolであり、そのようにリストすることはできません。Object.getOwnPropertySymbols(your_object)を使用してリストする必要があります。

For ... in ...ループはオブジェクトのプロパティを実際にリストしますが、シンボルは少し異なる種類のビーストであり、特別な処理が必要です。

関連する問題