对象转换成原始值的过程:
- 如果对象有
valueOf()方法并返回原始值,则调用 - 否则调用
toString()方法 - 否则抛出类型异常
function T() {}
T.prototype.valueOf = function () {
return "a";
};
new T() == "a"; // true
T.prototype.valueOf = function () {
return {};
};
T.prototype.toString = function () {
return "b";
};
new T() == "b"; // true
注意:Date 类型转换成原始值只使用 toString() 方法。