作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我知道当 JS 试图将对象表示为原始对象时,它会调用对象的 valueOf
方法。但是今天我发现它在同样的情况下也调用了toString()
方法:
var o = {};
o.toString = function() {return 1};
1+ o; // 2
为什么?如果我添加 valueOf
方法,则不会调用 toString
。
最佳答案
我想解释在 ECMA-262 specification 的 8.6.2.6 章中。 :
8.6.2.6 [DefaultValue]
[...]
当使用提示数字调用O的[[DefaultValue]]方法时,执行以下步骤:
使用参数“valueOf”调用对象 O 的 [[Get]] 方法。
如果 Result(1) 不是对象,转到步骤 5。
如果 Result(3) 是原始值,则返回 Result(3)。
使用参数“toString”调用对象 O 的 [[Get]] 方法。
如果 Result(5) 不是一个对象,转到第 9 步。
由于您的对象没有实现 valueOf,因此使用了 toString。
关于javascript - 为什么JS在给数字添加对象时会调用 `toString`方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38291098/
我创建了一个分支来开发新功能。由于这个新功能完全是作为一个新项目开发的,唯一可能的冲突来源是解决方案文件。 随着功能的开发,主分支更新了几次。当我完成开发和测试时,我做了: git checkout
我是一名优秀的程序员,十分优秀!