valueOf和toString的区别

基本上所有的JavaScript数据类型都有valueOf(),toString()方法,null除外,这两个方法解决了JavaScript值运算和显示的问题

valueOf()会把数据类型转换成原始类型,也就是说原来是什么类型,转换后还是什么类型,日期类型除外

toString()会把数据类型转换成string类型,也就是说不管原来是什么类型,转换后一律是string类型

这两个方法有意思的地方在于什么时候使用,总结如下:

1、valueOf()偏向于运算,toString()偏向于显示

2、对象转换时,优先调用toString()

3、强转字符串的情况下,优先调用toString()方法;强转数字的情况下优先调用valueOf()

4、正常情况下,优先调用toString()

5、在有运算操作符的情况下valueOf()的优先级高于toString(),这里需要注意的是当调用valueOf()方法无法运算后还是会再调用toString()方法

下面来看个案例:

var a = { a : 10 , toString : function(){ console.log("tostring"); return this.a } };
alert(+a); //10 tostring,先调用valueOf()方法,发现无法进行+运算,紧接着调用toString()方法
var b= {a:2,valueOf:function(){return this.a+2}};
alert(+b) //4 ,先调用valueOf()方法,返回4,可以进行运算,不再调用toString()
var b= {a:2,valueOf:function(){return this.a+2},toString : function(){ console.log("tostring"); return this.a }};
alert(+b) //4 ,先调用valueOf()方法,返回4,可以进行运算,不再调用toString(),从输出上可以看出没有调用toString()方法

JavaScript各种数据对象调用valueOf,toString返回值也是个容易出错的地方,下面做个总结:

调用valueOf()

对象 返回值 类型
Array 数组本身 Array
Boolean Boolean 值。 Boolean
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。 Number
Function 函数本身。 Function
Number 数字值。 Number
Object 对象本身。这是默认情况。 Object
String 字符串 String

调用toString()

对象 返回值 类型
Array 数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起。其操作与 Array.toString 和 Array.join 方法相同。 String
Boolean 字符串“true”,“false” String
Date 字符串日期,如"Fri Dec 23 2016 11:24:47 GMT+0800 (中国标准时间)" String
Function 函数字符串 String
Number 字符串形式值 String
Object "[object Object]" String
String 字符串 String

参考资料:

http://www.jb51.net/article/34843.htm  想看案例的可以看看这个

时间: 2024-08-05 16:42:06

valueOf和toString的区别的相关文章

Javascript中valueOf与toString区别

疑问: 在JS的数据类型中有两个方法 Object.prototype.valueOf 和 Object.prototype.toString,在实例到这两个的区别是什么? 我们进行如下的实例步骤: 案例1. var test={ age:20, toString:function(){return this.age-10;}, //重写 toString() valueOf:function(){return this.age+40;} //重写 valueOf() } 运行如下代码: ale

parseInt(),parseFloat(),valueOf(),intValue(),toString方法总结

本篇文章主要讲解一下在JAVA语言中数字型字符串和数字的转换,整型数字转换成字符串,以及个别方法之间的区别. 1.parseXxx()是SimpleDateFomat里面的方法,常用的包括parseInt(),parseFloat() 使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个. 语法: 下面给出了该方法的所有的变型: static int parseInt(String s) static int parseInt(String

关于valueOf和toString

//大概...... 前言 基本上,所有JS数据类型都拥有这两个方法,null除外.它们俩解决javascript值运算与显示的问题,重写会加大它们调用的优化. 测试分析 先看一例: var aaa = {   i: 10,   valueOf: function() { return this.i+30; },   toString: function() { return this.valueOf()+10; }  } alert(aaa > 20); // true  alert(+aaa

Simulate getter in JavaScript by valueOf and toString method

function Foo(a, b) { this.a = a; this.b = b; // simulate getter via valueOf and toString method this.sum = { valueOf: function () { return a + b }, toString: function () { return a + b } } } alert(new Foo(2, 3).sum); Simulate getter in JavaScript by

jsp中遇到Integer的方法valueOf()和parseInt()的区别.前者要求是对象类型,后者是数字型字符串

他们有本质区别,Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了. 而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性 Integer.parseInt()把String 型转换为Int型, Integer.valueOf()把String 型转换为Integer

valueOf()、toString()

基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题. JavaScript 的 valueOf() 方法 valueOf() 方法可返回 Boolean 对象的原始值. 用法booleanObject.valueOf(),返回值为booleanObject 的原始布尔值.如果调用该方法的对象不是 Boolean,则抛出异常 TypeError. var boo = new Boolean(false); con

ToString()和Convert.ToString()的区别

一.一般用法说明 ToString()是Object的扩展方法,所以都有ToString()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各种基本数据类型,也可以是bool或object类对象. 二.ToString()和Convert.ToString()的区别 一般情况下,这两种方法都可以通用,但是当返回的数据类型中有可能出现null值时如果调用ToString方法了,就会返回NullReferenceException,除非你要捕捉此异常再做处理

valueOf() 和 toString()

valueOf():如果存在任意原始值,返回最适合该对象类型的原始值. toString():将该对象的原始值以字符串形式返回. 这两个方法一般是交由JS去隐式调用,以满足不同的运算情况.  举个栗子:看图中(不要管那两个undefined),两种方法返回的true 颜色不同哦!因为toString()返回的是字符串,而valueOf()返回的是原始值. END valueOf() 和 toString()

Convert.ToString和ToString的区别

Convert.ToString能处理字符串为null的情况. static void Main(string[] args) { string msg = null; Console.WriteLine(Convert.ToString(msg)); Console.ReadKey(); } 运行,没有抛出异常. ToString方法不能处理字符串为null的情况,会抛出异常. static void Main(string[] args) { string msg = null; //Con