Symbol.species
Symbol.species
静态数据属性表示 众所周知的符号 Symbol.species
。创建对象副本的方法可能会在该对象上查找此符号,以获取在创建副本时使用的构造函数。
警告: [Symbol.species]
的存在允许执行任意代码,并可能导致安全漏洞。它也使某些优化变得更加困难。引擎实现者正在 调查是否要删除此功能。如果可能,请避免依赖它。
试一试
值
众所周知的符号 Symbol.species
。
Symbol.species 的属性属性 |
|
---|---|
可写 | 否 |
可枚举 | 否 |
可配置 | 否 |
描述
示例
使用 species
您可能希望在派生数组类 MyArray
中返回 Array
对象。例如,当使用返回默认构造函数的方法(例如 map()
)时,您希望这些方法返回父 Array
对象,而不是 MyArray
对象。species
符号可以让您做到这一点
js
class MyArray extends Array {
// Overwrite species to the parent Array constructor
static get [Symbol.species]() {
return Array;
}
}
const a = new MyArray(1, 2, 3);
const mapped = a.map((x) => x * x);
console.log(mapped instanceof MyArray); // false
console.log(mapped instanceof Array); // true
规范
规范 |
---|
ECMAScript 语言规范 # sec-symbol.species |
浏览器兼容性
BCD 表格仅在浏览器中加载