javascript Symbol 方法汇总

HTML5 herman 115浏览 0评论

最近看到一则笑话。为什么中国最赚钱的两个互联网公司,一个是“专骗女人钱的”,一个是“专骗小孩子钱的”。它们的名字一个叫阿里巴巴,一个叫腾讯。

可见学好互联网技术,能为进最赚钱的公司工作打好基础。本文将详细的讲解 javascript 中新的数据类型 symbol 的方法用法和作用。

javascript es6

Symbol 方法

  • Symbol.for(key):使用给定的key搜索现有符号,如果找到则返回符号。否则将得到一个新的使用给定的key在全局符号注册表中创建的符号。
  • Symbol.keyFor(sym):为给定符号从全局符号注册表中检索一个共享符号键。
  • Symbol.prototype.toSource():返回包含Symbol 对象源码的字符串。覆盖Object.prototype.toSource() 方法。
  • Symbol.prototype.toString():返回包含Symbol描述符的字符串。 覆盖Object.prototype.toString() 方法。
  • Symbol.prototype.valueOf():返回 Symbol 对象的初始值.。覆盖 Object.prototype.valueOf() 方法。
  • Symbol.prototype[@@toPrimitive]:返回Symbol对象的初始值。

对 symbol 使用 typeof 运算符

typeof运算符能帮助你识别(标识)symbol。

typeof Symbol() === 'symbol'
typeof Symbol('foo') === 'symbol'
typeof Symbol.iterator === 'symbol'

Symbol 类型转换

当使用 symbol 值进行类型转换时需要注意一些事情:

  • 尝试将一个 symbol 值转换为一个 number 值时,会抛出一个 TypeError 错误  (e.g. +sym or sym | 0).
  • 使用宽松相等时, Object(sym) == sym returns true.
  • 这会阻止你从一个 symbol 值隐式地创建一个新的 string 类型的属性名。例如,Symbol("foo") + "bar" 将抛出一个 TypeError (can't convert symbol to string).
  • "safer" String(sym) conversion works like a call to Symbol.prototype.toString() with symbols,但是注意 new String(sym) 将抛出异常。