使 toPrimitive 转换取决于上下文[重复]

2024-03-12

我希望一个对象在数字上下文中返回一个值,在字符串上下文中返回一个完全不同的值。以下不起作用。

foo = {
    toString: function() { return "string" },
    valueOf:  function() { return 123 }
}

console.log(foo * 2)       // got 246, fine
console.log("hi " + foo)   // got "hi 123", want "hi string"

The 加法运算符 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition将使用内部抽象操作将两个操作数转换为基元ToPrimitive https://tc39.es/ecma262/#sec-toprimitive,然后,如果一个操作数是字符串,它将使用内部抽象操作ToString https://tc39.es/ecma262/#sec-tostring将两者都转换为字符串(注意:这与toString用户态对象上的方法。)

结果是,添加Symbol.toPrimitive https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive对于该语言,您现在可以实现您的目标:

const foo = {
  [Symbol.toPrimitive](hint) {
    switch (hint) {
      case "string":
      case "default":
        return "string"
      case "number":
        return 123
      default:
        throw "invalid hint"
    }
  }
}

console.log(foo * 2) // 246
console.log("hi " + foo) // "hi string"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使 toPrimitive 转换取决于上下文[重复] 的相关文章

  • 在随机位置启动 HTML5

    我有一个大约 2 小时长的音轨 我想在我的网站上使用它 我希望它在页面加载时在随机位置开始播放曲目 使用 HTML5 可以吗 我知道您可以使用 element currentTime 函数来获取当前位置 但是如何在完全下载之前获取曲目的总时
  • Mapbox GL 中的 MaxBounds 和自定义非对称填充

    我有一个 Mapbox GL JS 应用程序 在地图上显示一些小部件 为了确保地图上的任何内容都不会被它们隐藏 我使用以下命令添加了一些填充map setPadding 这是一个不对称的 在我的例子中左边比右边大 它按预期工作 例如fitB
  • 在 R 传单中添加不透明度滑块

    如何在 R leaflet 应用程序中添加滑块来控制特定图层的不透明度 对于这个应用程序 我不想使用闪亮 这里建议 在 R 传单应用程序中添加滑块 https stackoverflow com questions 37682619 add
  • 为什么 Double 不能隐式转换为 Decimal

    我不明白十进制和双精度的转换规则 这样做是合法的 decimal dec 10 double doub double dec 然而令我困惑的是 decimal 是 16 字节的数据类型 而 double 是 8 字节 因此将 double
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 访问 nuxt 配置文件中的存储

    我想添加通过 Nuxt 静态生成的动态路由 我定义了一个客户端 服务器端存储asyncData方法 我想将这个存储值 一个数组 映射到我的nuxt config js文件使其成为 动态 静态 路线图nuxt generate命令 但如何访问
  • 将 Firebase FCM 添加到 ReactJS 应用程序

    我正在尝试向我的 ReactJS 应用程序中的用户发送推送通知 我已添加 firebase 请求用户通知权限 这正在发挥作用 但现在我想注册设备令牌 但这给了我错误 消息传递 我们无法注册默认的 Service Worker 无法注册 Se
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • ES6继承:使用`super`访问父类的属性

    JavaScript 的super关键字 当我在 Chrome Babel TypeScript 上运行代码时 得到了不同的结果 我的问题是哪个结果是正确的 规范的哪一部分定义了这种行为 下面的代码 class Point getX con
  • 为什么我收到“在嵌套函数中通过 this 对类字段进行潜在无效的引用访问”错误

    在普通 JS 中 我的代码可以正常工作 对于这种情况 我想组件化我的Wall类应该在浏览器中显示用户上传的图像 同样 这在 vanilla JS 中正常工作 但在 JSX 中不起作用 我得到了一个potentially invalid re
  • 如何使用 window.onerror 捕获所有 javascript 错误? (包括道场)

    这个问题是后续问题javascript 如何在弹出警报中显示脚本错误 https stackoverflow com questions 2604976 javascript how to display script errors in
  • 模板中带有 ng-if 的 angularjs 指令

    我正在构建一个在模板内使用 ng if 的指令 奇怪的是 提供给链接函数的元素没有扩展ng if代码 它只是ng if的注释行 经过一番尝试 我发现通过将链接代码包装在 timeout 中似乎可以使其正常工作 但我想知道这是否不是正确的处理
  • 如何将 Vue.js 作用域样式应用于通过视图路由器加载的组件?

    如何将 Vue js 作用域样式应用于通过以下方式加载的组件
  • Web组件中嵌套槽的内容不可见

    我有一个 Web 组件 它应该接受任意元素来包装其内容 虽然我可以在 Chrome 开发工具中看到插槽已正确分配 但 DOM 中什么也没有出现 以前有人见过这个问题吗 定义 class ExampleParent extends HTMLE
  • 呃!尝试将包发布到 npm 时出现 403

    我正在尝试将包发布到 npm 您可以在此处查看存储库 https github com biowaffeln mdx state https github com biowaffeln mdx state 我登录到 npmnpm login
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • 摩纳哥:如何添加内联自动完成/代码建议?

    我找不到任何有关如何添加内联自动完成功能的示例 如下图所示 有人可以指导我如何在摩纳哥做到这一点吗 这可以在 v1 66 中启用 现在在 Insiders 中 The editor quickSuggestions设置现在接受内联为 配置值
  • 以角度访问窗口 TemplateUrl 内的范围

    我的模式有一个 windowTemplateUrl 如下 div class modal fade div class modal dialog div class modal content square btn div div div
  • 确定 Javascript 中的日期相等性

    我需要找出用户在 Javascript 中选择的两个日期是否相同 日期以字符串 xx xx xxxx 形式传递给该函数 这就是我需要的全部粒度 这是我的代码 var valid true var d1 new Date datein val
  • 将多维数组转换为单数组(Javascript)

    我有一个对象数组 来自 XLSX js 解析器 因此其长度和内容各不相同 表示已给予项目的资助 简化后 它看起来像这样 var grants id p 1 location loc 1 type A funds 5000 id p 2 lo

随机推荐

  • THREE.BufferGeometry - 访问面索引和面法线

    在 BufferGeometry 中 有没有一种方法可以访问面索引和法线而不转换为几何图形 手头的几何体是由 Threejs 编辑器创建的 SphereBufferGeometry 我只需要读取面部索引和法线 而不需要修改它们 Buffer
  • Google 结账通知确认失败

    我有一个被调用的回调 url 我可以处理它 但是 Google 不会处理我的确认 这一切都在EnvironmentType Sandbox 在 Google 结帐 集成控制台 中 我收到以下消息 我们在处理您的通知确认时遇到错误 我们得到的
  • 使用 ItemTouchHelper 时,如何在拖动时取消对 RecyclerView 中项目的拖动?

    背景 我试图拥有一个具有不同视图类型的 RecyclerView 但具有拖放功能以及单击和长按操作的能力 它与 电话 应用程序类似 您可以在其中更改收藏夹项目的顺序 在 电话 应用程序上 当您长按某个项目时 会立即出现上下文菜单 如果继续拖
  • 配置器中的组合数量

    我被要求编写一个例程来决定产品配置器中可能的组合数量 配置器非常简单 尽管它具有比这更多的功能 但它可以建模为多个 单选组 如 UI 控件 其中必须选择 n 个选项之一 唯一可以使用的约束是规则 如果选择了一个选项 则不能选择另一个选项 所
  • Pandas 两个分组的 DataFrame 列的简单关联

    有没有一种好方法来获取两个分组的 DataFrame 列的简单关联 看来无论熊猫怎样 corr 函数想要返回一个相关矩阵 例如 i pd MultiIndex from product A B C np arange 1 11 1 name
  • 如果 url 不包含某些字符串,则 htaccess 重定向

    我想将所有传入请求重定向到另一个网址 如果它不包含 和 admin 我需要它用于 angular js 但我有 admin 和 php 例如 http example com link to article http example com
  • JavaScript 检测/浏览器统计

    这个问题已经被问过几次了 但我认为仍然值得与你们核实以获得更多意见 我的所有网站都使用 Google Analytics 进行统计 由于它依赖于 JavaScript 我认为检查有多少人在其浏览器中启用 禁用了 JS 是很重要的 我记得我经
  • 如何从 Azure 数据工厂连接到 Firebird/InterBase (Syntess) 数据库?

    在 ADF 中 我创建了一个管道 源是 ODBC 表或查询 下一步是创建链接服务 集成运行时已创建并选择 如下所示 现在问题来了 我应该输入什么连接字符串 尝试与Server 192 168 1 35 Database dbname DSN
  • Tomcat - 如何指定可以在 server.xml 中扩展的属性

    目前 我的 server xml 中有
  • 用Java从视频中获取缩略图

    我想从 servlet 或任何其他服务器端 Java 方法中的视频创建缩略图 视频文件上传到服务器上 上传后应创建缩略图 我的问题不是创建缩略图 而是仅创建一个或一定数量的缩略图 到目前为止我的代码 public class Test pu
  • __format__ 方法应该如何用于 int?

    我看到有一个 format 方法但有帮助 int format 不提供任何帮助 我也知道你不应该打电话给 method 直接地 什么时候调用这个方法 它的论据是什么 它用于 Py3k 的新字符串格式化方案 您可以在这里找到更多信息 http
  • 我应该将所有项目存储在一个还是多个存储库中?

    我目前正在使用 TortoiseSVN 来管理我目前正在进行的几个项目 当我第一次将所有内容移至源代码管理中时 我不太确定应如何布置所有内容 因此我最终将每个项目放入其自己的存储库中 我想知道将它们全部移动到一个大存储库中并将它们分成项目文
  • 为什么我们要转换 malloc 的返回值? [复制]

    这个问题在这里已经有答案了 有人可以向我解释一下为什么有些程序员在 malloc 前面使用 char 吗 我知道它返回 void 但为什么我希望它只返回 char 内存 抱歉 我只是编程新手 谢谢 无需转换返回值malloc因为它的返回类型
  • C# 中的 vbNullChar 等价物是什么?

    C 中 Visual basic vbNullChar 的等价物是什么 我想在 C 中复制这个 VB 语句 Dim sVersion As String sVersion New String vbNullChar 255 我怀疑你想要 s
  • 为什么 C# 内联 if 结果与 if 不同?

    这是我的代码 object w 44 var k1 w is double Convert ToSingle w unchecked uint Convert ToInt64 w if w is double w 22 结果是k1 44 0
  • XIB 中用作自定义 UITableViewCell 的自定义按钮不响应点击 (ios7)

    因此 我在这里将工作的 ios 6 应用程序升级到 ios7 现在我无法在 uitableviewcells 内的自定义按钮 或其他子视图 上接收点击或其他操作 Edit My code 这是我部署 PlaceCell 的位置 UITabl
  • Java/Mysql 服务器程序中的电子邮件帐户密码存储

    我处于一个棘手的境地 我正在编写一个应用程序 使用我公司的电子邮件帐户向客户发送电子邮件 这里的问题是我必须拥有该帐户的密码才能使服务器上的邮件服务从该帐户发送电子邮件 我知道密码永远不应该以纯文本形式存储 尤其是用于重要电子邮件帐户的密码
  • Vim netrw 询问“按 ENTER 或键入命令继续”

    我注意到 当我开始新的一天并打开 vim 然后使用 Exp 时 我收到 按 ENTER 或键入命令继续 提示 通常这会在执行外部命令时显示 我不记得 Exp 过去这样做过 而且 第一次使用netrw时才会出现提示 虽然微不足道 但我觉得这很
  • 如何在 Stata 中查找并替换字符串变量的一部分?

    我正在使用一个基本上是 URL 的变量 所以观察结果包括像这样的值 www google com https www google com https yahoo movies com 我正在尝试创建一个 do 文件以将一堆这些文件导入到
  • 使 toPrimitive 转换取决于上下文[重复]

    这个问题在这里已经有答案了 我希望一个对象在数字上下文中返回一个值 在字符串上下文中返回一个完全不同的值 以下不起作用 foo toString function return string valueOf function return