Javascript 何时可能缺少valueOf方法?

Javascript 何时可能缺少valueOf方法?,javascript,object,tostring,value-of,Javascript,Object,Tostring,Value Of,我有这个密码。我不明白它是怎么工作的 设obj={ 价值:功能{ 返回{}; }, toString:函数{ 返回222; } }; console.logNumberobj//222从你引用的文章中: … 唯一必须做的事情是:这些方法必须返回原语,而不是 物体 历史笔记 出于历史原因,如果toString或valueOf返回一个对象, 没有错误,但是这样的值会被忽略,就像方法没有忽略一样 存在 在您的第一个代码段中,这两个方法都存在并已尝试:first obj.valueOf,但由于它返回的

我有这个密码。我不明白它是怎么工作的

设obj={ 价值:功能{ 返回{}; }, toString:函数{ 返回222; } };
console.logNumberobj//222从你引用的文章中:

… 唯一必须做的事情是:这些方法必须返回原语,而不是 物体

历史笔记 出于历史原因,如果toString或valueOf返回一个对象, 没有错误,但是这样的值会被忽略,就像方法没有忽略一样 存在

在您的第一个代码段中,这两个方法都存在并已尝试:first obj.valueOf,但由于它返回的是空对象而不是原语值,因此也会调用obj.toString


在您的第二个代码片段中,obj.valueOf已返回777号,这将成为结果。

来自您引用的文章:

… 唯一必须做的事情是:这些方法必须返回原语,而不是 物体

历史笔记 出于历史原因,如果toString或valueOf返回一个对象, 没有错误,但是这样的值会被忽略,就像方法没有忽略一样 存在

在您的第一个代码段中,这两个方法都存在并已尝试:first obj.valueOf,但由于它返回的是空对象而不是原语值,因此也会调用obj.toString


在第二个代码段中,obj.valueOf已返回777号,这将成为结果。

obj.valueOf,无论存在什么,obj.toString,无论存在什么。。。实际上,在什么样的情况下这些方法不可能存在?刚出curiosity@IvanObject.createnull,{valueOf:null,toString:undefined}我知道了。我只需要取消这些方法。但我还有一个问题。obj[Symbol.toPrimitive]何时存在?我发现在简单对象中几乎没有obj[Symbol.toPrimitive]。那么,在什么情况下可以使用此方法?@Ivan Date和Symbol实例有此方法,您也可以在自己的对象和自定义类上定义它。obj.valueOf,whatever exists,obj.toString,whatever exists。。。实际上,在什么样的情况下这些方法不可能存在?刚出curiosity@IvanObject.createnull,{valueOf:null,toString:undefined}我知道了。我只需要取消这些方法。但我还有一个问题。obj[Symbol.toPrimitive]何时存在?我发现在简单对象中几乎没有obj[Symbol.toPrimitive]。那么,在什么情况下可以使用这个方法呢?@Ivan Date和Symbol实例有这个方法,您也可以在自己的对象和自定义类上定义它。