gpt4 book ai didi

javascript - 围绕对象键的数组符号

转载 作者:行者123 更新时间:2023-11-30 11:18:44 25 4
gpt4 key购买 nike

let obj = {
a: 'alex',
[Symbol.iterator] : function* () {
yield this.a;
}
}

在学习 Generator 时遇到了这段代码。想知道我们使用 [] 包围对象属性的这种语法 [Symbol.iterator] 的术语是什么?我们可以将它应用于任何其他属性还是仅适用于 Symbol.iterator

此外,是否有可能使其像任何其他函数一样可重用,例如下面的代码

let obj = {
a: 'alex',
[Symbol.iterator] : function* () {
yield this.a;
},
getA: function() {
return this.a
}
}


console.log(obj.getA())//Perhaps obj.[Symbol.iterator]()............... ?

最佳答案

在现代 JavaScript 中,括号中的属性名称如 [Symbol.iterator] 意味着应评估括号中的表达式以确定声明中的属性名称。

表达式 Symbol.iterator 的计算结果为 Symbol 实例,用于识别可迭代对象的迭代器函数属性。

在“老式”JavaScript 中,代码可以写成:

let obj = {
a: 'alex',
getA: function() {
return this.a
}
};

obj[Symbol.iterator] = function* () {
yield this.a;
};

(显然这不是真正“老式的”JavaScript,因为 Symbol 功能是新的,但希望它很清楚。)

关于javascript - 围绕对象键的数组符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50616035/

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