JS References
约 2 分钟阅读
标签:参考资料
- Decorator笔记Decoratoresbuild 0.21+ - 2024-05 · TS 5.0+ - 2023-03 · Stage 3 - 2022-03 · Firefox #1781212 · Chromium #42202709 · 动态类不支持 Decorator 语法, 依赖代码生成打开:/notes/web/script/js/decorator
- Reflect笔记Reflect反射 · 参考 · https://rbuckton.github.io/reflect-metadata/ · | ext | for | · | Reflect.decorate | · | Reflect.defineMetadata |打开:/notes/web/script/js/reflect
- Prototype笔记JavaScript Prototypevs vs vs · - · 决定了对象继承关系 · 通常显示为 · - · - · - · 对象初始化时 的写法是 推荐的、标准化的、优化了的 · 当访问一个对象的属性时,如果这个实例上没有找到,就会查找 指向的原型对象上是否有该属性 · -打开:/notes/web/script/js/prototype
bigint
- Chrome 67+, Safari 14.1+, Node 10.4+
- 能表示 int64
- ⚠️ 不能和 number 直接运算
- clamp/截断
- BigInt.asIntN
- BigInt.asUintN
Function
// 检测 AsyncIterator/Generator
// next, return, throw
console.assert('next' in async function* () {}.prototype);
console.assert('next' in function* () {}.prototype);
(function* () {})[Symbol.toStringTag]; // GeneratorFunction
(async function* () {})[Symbol.toStringTag]; // AsyncGeneratorFunction
(async () => {})[Symbol.toStringTag]; // AsyncFunctionSymbol
- Symbol
- 不支持 JSON 序列化
- 通过 replacer 可做特殊处理
- 作为 value 会被处理为 null
- 不能 Transferable
- 不支持 JSON 序列化
- 全局 Symbol
- structuredClone 会保留
- 局部 Symbol/Unique Symbol
- structuredClone 会丢弃
{
// unique
const sym1 = Symbol('description');
const sym2 = Symbol('description');
// 不等
console.assert(sym1 !== sym2);
}
{
// 全局
const sym1 = Symbol.for('description');
const sym2 = Symbol.for('description');
// 等
console.assert(sym1 === sym2);
console.assert(Symbol.keyFor(sym1) === 'description');
}| Symbol | Description | Used by | Since |
|---|---|---|---|
Symbol.asyncIterator | 返回对象默认的异步迭代器的方法 | for await...of | Chrome 63+, Safari 12+, Node 10+ |
Symbol.hasInstance | 判断对象是否为某构造函数实例的方法 | instanceof | Chrome 50+, Safari 10+, Node 6+ |
Symbol.isConcatSpreadable | 指示对象是否可展开为数组元素的布尔值 | Array.prototype.concat() | Chrome 38+, Safari 9+, Node 0.12+ |
Symbol.iterator | 返回对象默认迭代器的方法 | for...of | Chrome 38+, Safari 9+, Node 0.12+ |
Symbol.match | 匹配字符串的方法 | String.prototype.match() | Chrome 50+, Safari 10+, Node 6+ |
Symbol.matchAll | 返回所有匹配结果的迭代器的方法 | String.prototype.matchAll() | Chrome 73+, Safari 13+, Node 12+ |
Symbol.replace | 替换字符串中匹配子串的方法 | String.prototype.replace() | Chrome 50+, Safari 10+, Node 6+ |
Symbol.search | 返回字符串中匹配索引的方法 | String.prototype.search() | Chrome 50+, Safari 10+, Node 6+ |
Symbol.species | 用于创建派生对象的构造函数 | - | Chrome 51+, Safari 10+, Node 6.5+ |
Symbol.split | 拆分字符串的方法 | String.prototype.split() | Chrome 50+, Safari 10+, Node 6+ |
Symbol.toPrimitive | 将对象转换为原始值的方法 | - | Chrome 44+, Safari 9+, Node 0.12+ |
Symbol.toStringTag | 用于修改对象的默认描述字符串 | Object.prototype.toString() | Chrome 43+, Safari 9+, Node 0.12+ |
Symbol.unscopables | 定义对象属性在 with 环境中不可见 | - | Chrome 38+, Safari 9+, Node 0.12+ |
Symbol.toStringTag
- Object.prototype.toString()
[object ${@@toStringTag}]
关联信息
反向链接、本文链接的其他页面和外部资料。
站内链接
- Decorator笔记 · Decorator
esbuild 0.21+ - 2024-05 · TS 5.0+ - 2023-03 · Stage 3 - 2022-03 · Firefox #1781212 · Chromium #42202709 · 动态类不支持 Decorator 语法, 依赖代码生成
- JavaScript Prototype笔记 · Prototype
vs vs vs · - · 决定了对象继承关系 · 通常显示为 · - · - · - · 对象初始化时 的写法是 推荐的、标准化的、优化了的 · 当访问一个对象的属性时,如果这个实例上没有找到,就会查找 指向的原型对象上是否有该属性 · -
- Reflect笔记 · Reflect
反射 · 参考 · https://rbuckton.github.io/reflect-metadata/ · | ext | for | · | Reflect.decorate | · | Reflect.defineMetadata |
References
其他外链1 条
- developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symboldeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol