请看以下示例。
是Isnan(obj )
与//相同
类型of obj.value of (===' object ' ) )。
Isnan(obj.tostring ) );
} else {
Isnan(obj.valueof ) );
}
在上面的代码中,isNaN函数将obj对象转换为数字。 首先,调用obj.valueOf方法,作为结果返回对象本身,然后继续调用obj.toString方法,此时返回字符串“[object Object]”,并针对该字符串返回isject 因为字符串不是数字。
缺省情况下,对象的valueOf方法返回对象本身,因此通常总是调用toString方法,toString方法返回对象的类型字符串,如[object Object]。 所以,结果如下。
Isnan ()//true
如果toString方法返回非原始类型的值,则结果将错误。
var obj={
value of :函数(
返回{ };
(,
tostring :函数(
返回{ };
}
(;
是Isnan(obj )
//typeerror : cannotconvertobjecttoprimitivevalue
上面代码中的valueOf和toString方法返回对象,因此转换为数字时会报告错误。
从上面的示例中可以看到,valueOf和toString方法是可以定制的。
Isnan({
value of :函数(
返回2;
}
() )
//false
Isnan({
tostring :函数(
返回3;
}
() )
//false
您可以执行以下测试,这些测试与之前执行的valueOf (为了更好地解释方法,Number ) (和isNaN ) )的行为相似
number({
value of :函数(
返回2;
(,
tostring :函数(
返回3;
}
() )
//2
说明足够明白了。 哈哈,我想录用你