【问题标题】:Why is RegExp.prototype a /(?:)/, when Boolean.prototype is a Boolean {}? [duplicate]当 Boolean.prototype 是 Boolean {} 时,为什么 RegExp.prototype 是 /(?:)/? [复制]
【发布时间】:2014-07-08 23:45:23
【问题描述】:

环境:
- Chrome 控制台

我明白了:

Boolean.prototype;  // Boolean {}
Number.prototype;  // Number {}

我不明白:

RegExp.prototype;  // /(?:)/

问题:

  • RegExp 不一样,为什么?
  • 方法确定了,默认调用toString的Date.prototype(like)吗?

【问题讨论】:

  • 我想这是因为 RegExp 在大多数浏览器中几乎完全原生实现。

标签: javascript prototype ecmascript-5


【解决方案1】:

您看到的是 Chrome 控制台的行为。它向您显示了返回该正则表达式的 RegExp.prototype.toString() 的值。

【讨论】:

  • 为什么。 ToString() 方法会被调用吗?规格?
  • @user3474300 check the MDN documentation。它说打印对象的“字符串表示”,这意味着它正在调用.toString()。您可以通过使用您自己的 .toString() 版本创建一个对象来检查自己,这会做一些有趣的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2011-07-10
  • 2013-04-12
  • 2018-08-16
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
相关资源
最近更新 更多