js中toString和valueOf的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中toString和valueOf的区别相关的知识,希望对你有一定的参考价值。
toString:返回对象的字符串表示形式。
语法:objectname.toString([radix])
objectname要为其搜索字符串表示形式的对象。
radix可选,为将数字值转换为字符串指定一个基数。 此值仅用于数字。
toString 方法是一个所有内置的 javascript 对象的成员。 它的行为取决于对象的类型:
2.valueOf:返回指定对象的基元值。
语法:object.valueOf( )
object 引用是任何内部 JavaScript 对象,将通过不同的方式为每个内部 JavaScript 对象定义 valueOf 方法。Math 和 Error 对象都没有 valueOf 方法。
总结:toString主要是把对象转换为字符串,而valueOf主要把对象转换成一个基本数据的值这就是他们之间最基本的区别。
参考技术A ”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。下面的规则用于判定===运算符比较的两个值是否相等的判断条件
•如果两个值的类型不同,它们就不相同。
•如果两个值是数字,而且值相同,那么除非其中一个或两个都是NaN(这种情况它们不是等同的),否则它们是等同的。值NaN永远不会与其他任何值等同,包括它自身(奇怪的家伙),要检测一个值是否是NaN,可以使用全局函数isNaN()。
•如果两个值都是字符串,而且在串中同一位置上的字符完全相同,那么它们就完全等同。如果字符串的长度或内容不同,它们就不是等同的。
•如果两个值都是布尔型true,或者两个值都是布尔型false,那么它们等同。
•如果两个值引用的是同一个对象、数组或函数,那么它们完全等同。如果它们引用的是不同的对象(数组或函数),它们就不完全等同,即使这两个对象具有完全相同的属性,或两个数组具有完全相同的元素。
•如果两个值都是null或都是undefined,它们完全相同。 参考技术B js权威指南中提到了
toString主要是把对象转换为字符串;
valueOf主要把对象转换成一个基本数据的值; 参考技术C toString是把对象转换为字符串;
valueOf是把对象转换成一个基本数据的值
valueOf偏向于运算,toString偏向于显示。
1、 在进行对象转换时(例如:alert(a)),将优先调用toString方法,如若没有重写toString将调用valueOf方法,如果两方法都没有重写,按Object的toString输出。
2、 在进行强转字符串类型时将优先调用toString方法,强转为数字时优先调用valueOf。
3、 在有运算操作符的情况下,valueOf的优先级高于toString。
js 中 toString( ) 和valueOf( )
1、toString()方法:主要用于Array、Boolean、Date、Error、Function、Number等对象转化为字符串形式。日期类的toString()方法返回一个可读的日期和字符串。
数组形式:
1 var array = ["CodePlayer", true, 12, -5]; 2 console. log( array.toString() ); 3 输出的形式为: 4 CodePlayer,true,12,-5
1 日期形式: 2 3 var date = new Date(2016, 9, 3, 23, 11, 59, 230); 4 console. log( date.toString() ); 5 输出的形式是: 6 1.Mon Oct 03 2016 23:11:59 GMT+0800 (CST)// (中国标准时间)
1 数字形式: 2 var num = 15.26540; 3 consoel.log( num.toString() ); 4 输出的形式是: 5 15.2654
1 Object: 2 var obj = {name: "张三", age: 18}; 3 console. log( obj.toString() ); 4 输出的形式是: 5 [object Object]
1 布尔形式: 2 var bool = true; 3 console. log( bool.toString() ); 4 输出的形式是:5 true
2、valueOf()方法:
这个方法没有的任务并没有详细的定义:如果存在任意原始值,它就默认将对象转换为表示它的原始值。对象是复合值,而且大多数对象无法真正表示为一个原始值,因此默认的valueOf()方法简单地返回对象本身,而不是返回一个原始值。数组、函数和正则表达式简单地继承了这个默认方法,调用这些类型的实例的valueOf()方法只是简单返回这个对象本身。日期类定义的valueOf()方法会返回它的一个内部表示:1970年1月1日以来的毫秒数.
1 var d = new Date(2016,9,2); 2 d.valueOf(); 3 输出的是: 4 1475337600000
转:http://1752306891.iteye.com/blog/2322753
以上是关于js中toString和valueOf的区别的主要内容,如果未能解决你的问题,请参考以下文章