转载:https://www.jb51.net/article/74888.htm
本文给大家介绍javascript中tostring()和valueof()的用法及两者的区别,对js tostring valueof相关知识感兴趣的朋友一起学习吧
基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决JavaScript值运算与显示的问题。
1. 用法
-
toString()方法:返回对象的字符串表示。
对象 操作 Array 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。 Boolean 如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。 Date 返回日期的文字表示法。 Error 返回一个包含相关错误消息的字符串。 Function 返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称: function functionname( ) { [native code] }
Number 返回数字的字符串表示。 String 返回 String 对象的值。 默认 返回 “ [object objectname]
”,其中objectname
是对象类型的名称。 -
valueOf()方法:返回指定对象的原始值。
对象 返回值 Array 返回数组对象的原始值 Boolean Boolean 值。 Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数。 Function 函数本身。 Number 数字值。 Object 对象本身。这是默认情况。 String 字符串值。
2. 两者的共同点与不同点
-
共同点:在 JavaScript 中,toString()方法和valueOf()方法,在输出对象时会自动调用。
-
不同点:二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。
例子1如下:
var obj = {};
obj.valueOf = function(){
return 10;
}
obj.toString = function(){
return "www";
}
var result = obj + 1; //var result = obj.valueOf() + 1; 11
alert(result);
alert(obj); //alert(obj.toString()); 'www'
例子2如下:
function obj(){ }
obj.prototype.toString = function(){
return 'dfsf';
};
obj.prototype.valueOf = function(){
return '3333';
};
var e = new obj();
var o = new obj();
alert(o);//alert(obj.toString()) 'dfsf'
alert(o+e);//alert(obj.valueOf()+obj.valueOf()) '33333333'
3. toString vs valueOf的差别
-
返回值类型的差别:
- toString()一定将所有内容转为字符串
- valueOf()取出对象内部的值,不进行类型转换
-
用途的差别:
- valueOf()专用于算数计算和关系运算
- toString()专用于输出字符串
-
共同的缺点:无法获取null和undefined的值