使topprimitive转换依赖于上下文
Make toPrimitive conversion depend on the context
我希望一个对象在数字上下文中返回一个值,而在字符串上下文中返回一个完全不同的值。
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"
加法运算符将使用内部抽象操作ToPrimitive
将两个操作数转换为原语,然后,如果一个操作数是字符串,它将使用内部抽象操作ToString
将两个操作数转换为字符串(注意:这与用户对象上的toString
方法不同)
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"
相关文章:
- 依赖于缓慢加载javascript的UI
- 如何隐藏&使用jQuery禁用依赖于另一个字段值的字段
- Node.js中依赖于版本的类型继承
- 如何使AngularJS控制器依赖于通过ajax加载在rootScope上的值
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- Ajax xml源解析依赖于jQuery的点击操作
- Sails.js日志传输依赖于环境
- 如何使用 2 个 XMLHttpRequest 一个依赖于另一个
- Javascript表单.使一个条目依赖于另一个条目
- 在<p>标签依赖于<选择>标签,javascript
- Angularjs-uib日期选择器中的customClass依赖于promise
- 试图使一个事件依赖于另一个事件,并使用jquery自定义事件传递数据
- 使用jquery如何自动删除下拉列表中的第一个空白选项(如果它依赖于另一个选项)
- yii2:依赖于Action的条件显示/显示字段
- 测试依赖于另一个指令Angularjs的指令
- 创建一个不依赖于Snap实例的组
- 屏幕依赖于菜单切换,并在javascript中自动打开
- Colspan修改依赖于CSS3@media查询
- 使计算属性依赖于emberjs中另一个对象的所有属性
- 使topprimitive转换依赖于上下文