在Javascript中,每个对象都有一个valueOf()和toString()方法。我本以为每当需要进行字符串转换时,都会调用toString()方法,但显然它被valueOf()压倒了。
例如,代码
var x = {toString: function() {return "foo"; },
valueOf: function() {return 42; }};
window.console.log ("x="+x);
window.console.log ("x="+x.toString());
将打印
x=42
x=foo
例如,如果x是一个复数,这会让我感到反感。例如,我希望valueOf()给出其大小,但是每当我想转换为字符串时,我都会想要类似“ a +
bi”的东西。而且我不想在隐含字符串的上下文中显式调用toString()。
这就是它的样子吗?
(“ x =” + x)给出“ x = value”而不是“x=tostring”的原因如下。当评估“+”时,javascript首先收集操作数的原始值,然后根据每个原始类型确定是否应应用加法或串联。
所以,这就是您的想法
a + b:
pa = ToPrimitive(a)
if(pa is string)
return concat(pa, ToString(b))
else
return add(pa, ToNumber(b))
这就是实际发生的情况
a + b:
pa = ToPrimitive(a)
pb = ToPrimitive(b)*
if(pa is string || pb is string)
return concat(ToString(pa), ToString(pb))
else
return add(ToNumber(pa), ToNumber(pb))
也就是说,toString应用于valueOf的结果,而不是原始对象。
*在字符串上下文中调用时,ToPrimitive确实会调用toString,但这不是这种情况,因为’+’不会强制执行任何类型上下文。
本文向大家介绍深入理解Javascript中的valueOf与toString,包括了深入理解Javascript中的valueOf与toString的使用技巧和注意事项,需要的朋友参考一下 基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下。 toStr
本文向大家介绍简介JavaScript中valueOf()方法的使用,包括了简介JavaScript中valueOf()方法的使用的使用技巧和注意事项,需要的朋友参考一下 JavaScript的Boolean.valueOf()方法返回指定 Boolean对象的原始值. 语法 boolean.valueOf() 下面是参数的详细信息: NA 返回值: 返回指定Boolean对象的原始值。
在Java中,和之间有什么区别吗?这些是否有特定的代码约定?
valueOf 方法 返回 Array 对象的原始值。 语法: arrayObject.valueOf(); 返回值: arrayObject 的原始值。 说明: 原始值由 Array 对象派生的所有对象继承。 valueOf() 方法不创建新的数组,而是直接修改原有的数组。 注: 该方法会改变数组的长度。 valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现
valueOf 方法 valueOf() 方法可返回 String 对象的原始值。 原始值是由从 String 对象下来的所有对象继承的。 valueOf() 方法通常由 JavaScript 在后台自动进行调用,而不是显式地处于代码中。 语法: stringObject.valueOf(); 返回值: stringObject 的原始值。 异常抛出: 当调用该方法的对象不是 String
valueOf 方法 valueOf() 方法可以字符串返回数字。 字符串的输出通常等于该数字。 valueOf() 方法通常由 JavaScript 在后台自动进行调用,而不是显式地处于代码中。 语法: NumberObject.valueOf(); 返回值: NumberObject 的原始数值。 异常抛出: 当调用该方法的对象不是 Number 时抛出 TypeError 异常。 示例