ako*_*tch 5 javascript iterator symbols
例如,如果我创建了一个数组var array=[1,2,3,4];来返回迭代器,我会var iterator=array[Symbol.iterator]();不明白为什么你通过括号访问Symbol.iterator属性?为什么它不仅仅是array.Symbol.iterator?
名为的数组上没有属性Symbol(除非您在那里放置一个属性)。相反,您正在查找其键是Symbol.iterator指向的符号基元的值。Symbol.iterator返回一个符号,您可以使用该符号作为查找键。这有点像用变量查找属性:
let a = [1, 2, 3]
a.someProp = "hello"
let key = "someProp"
// this doesn't work for the same reason s.Symbol.iterator doesn't:
// a.key
// but this does:
console.log(a[key])
// So with a Symbol:
let k = Symbol.iterator
console.log(typeof k)
// k is now a reference to the symbol that is the key
// you can use that to returns the iterator function
console.log(a[k]) // <-- that returns your iterator function
console.log([...a[k]()])
// equivalent to:
console.log([...a[Symbol.iterator]()])Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |