Wener Notes

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

JavaScript
// 检测 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]; // AsyncFunction

Symbol

  • Symbol
    • 不支持 JSON 序列化
      • 通过 replacer 可做特殊处理
      • 作为 value 会被处理为 null
    • 不能 Transferable
  • 全局 Symbol
    • structuredClone 会保留
  • 局部 Symbol/Unique Symbol
    • structuredClone 会丢弃
TypeScript
{
  // 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');
}
SymbolDescriptionUsed bySince
Symbol.asyncIterator返回对象默认的异步迭代器的方法for await...ofChrome 63+, Safari 12+, Node 10+
Symbol.hasInstance判断对象是否为某构造函数实例的方法instanceofChrome 50+, Safari 10+, Node 6+
Symbol.isConcatSpreadable指示对象是否可展开为数组元素的布尔值Array.prototype.concat()Chrome 38+, Safari 9+, Node 0.12+
Symbol.iterator返回对象默认迭代器的方法for...ofChrome 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 条
最近更新commit ed3adbfEdit

On this page