JS symbol toPrimitive

🌙
手机阅读
本文目录结构

**Symbol.toPrimitive** 是一个内置的 Symbol 值,它是作为对象的函数值属性存在的,当一个对象转换为对应的原始值时,会调用此函数。

描述

在 Symbol.toPrimitive 属性(用作函数值)的帮助下,一个对象可被转换为原始值。该函数被调用时,会被传递一个字符串参数 hint ,表示要转换到的原始值的预期类型。 hint 参数的取值是 "number""string" 和 "default" 中的任意一个。

Symbol.toPrimitive 属性的属性特性:
writable
enumerable
configurable

示例

下面的例子展示了, Symbol.toPrimitive 属性是如何干扰一个对象转换为原始值时输出的结果的。

  1. // 一个没有提供 Symbol.toPrimitive 属性的对象,参与运算时的输出结果
  2. var obj1 = {};
  3. console.log(+obj1); // NaN
  4. console.log(`${obj1}`); // "[object Object]"
  5. console.log(obj1 + ""); // "[object Object]"
  6. // 接下面声明一个对象,手动赋予了 Symbol.toPrimitive 属性,再来查看输出结果
  7. var obj2 = {
  8. [Symbol.toPrimitive](hint) {
  9. if (hint == "number") {
  10. return 10;
  11. }
  12. if (hint == "string") {
  13. return "hello";
  14. }
  15. return true;
  16. }
  17. };
  18. console.log(+obj2); // 10 -- hint 参数值是 "number"
  19. console.log(`${obj2}`); // "hello" -- hint 参数值是 "string"
  20. console.log(obj2 + ""); // "true" -- hint 参数值是 "default"

规范

规范 状态 注释
ECMAScript 2015 (6th Edition, ECMA-262)Symbol.toPrimitive Standard 原始定义
ECMAScript Latest Draft (ECMA-262)Symbol.toPrimitive Draft

其他资料

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了