gpt4 book ai didi

javascript - 为什么要通过括号访问 Symbol.iterator?

转载 作者:搜寻专家 更新时间:2023-11-01 04:12:42 24 4
gpt4 key购买 nike

如果我创建了一个数组,例如,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]()])

关于javascript - 为什么要通过括号访问 Symbol.iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com