JS中的toString()用法
toSting()方法,在JS中是一个十分常见的方法,因为所有的对象(除了null)都有这个方法(因为他是Object原型上的方法)。他最常用的功能就是将表达式的值转化为字符串,其实,这个方法不止是这个功能,还有其他多种多样的用法。 1.number转进制数var num1 = 123; num1.toString(); ? // '123' 转变成十进制的字符串 123.toString(); ? ?//?Uncaught SyntaxError,哈哈报错了,有没有直接使用的方法呢,当然有 123..toString(); ? // '123' 123 .toStrimg(); ? // ‘123’ (有空格) 这似乎是最常见的方法。当我们需要将一个数值转换成2进制或8进制的时候怎么办?自己写个函数?其实不用。 3..toString(2) ? ?// ?'11' ?二进制11 11..toString(8) ?// ?'13' ?八进制13 12..toString(16) ?// ?'c' ?十六进制12 这种情况下,进制转变就变得容易多了。 注:括号中的底数在2-36之间。 2.用于判断变量类型在JS中,我们有typeof可以用来判断基本类型的变量, typeof 123 ? ?//?"number" typeof '123' ?//?"string" 可是遇到以下这种情况的话,typeof方法就没有什么用武之地了, typeof [] ? ? // ?'object' typeof {} ? ? // ?'object' typeof new Number(11) ? ? // ?'object' ?这也是为什么创建基本类型变量时,不推荐用这种方法 此时,toString()就能够胜任这个任务了。 我们可以这样采用这个方法: Object.prototype.toString.call([]) ? ?// ? "[object Array]" Object.prototype.toString.call({}) ? // ??"[object Object]" Object.prototype.toString.call(new Date) ? //? "[object Date]" Object.prototype.toString.call(new Number(3423)) ?// ? "[object Number]" 这种情况下,类型十分清晰,将这两种情况合成,我们可以新创一个Typeof函数,来判断所有类型的变量。 function Typeof(arg1) { if (typeof arg1 != 'object') { return typeof arg1; } else { return Object.prototype.toString.call(arg1).slice(8,-1).toLowerCase(); } } 使用Typeof函数,就可以检测任何类型的变量了。 3.其他当数组使用该方法时,会打印该数组中的值。 var arr = [1,2,3,4]; arr.toString() ? ? ? ? //?"1,4" 当布尔类型的调用该方法,会返回含布尔值的字符串 var bool = false; bool.toString() ? ? ? // ?'false' 当undefined调用时,会有个报错 var a = undefined; a.toString(); ? ? ? //?Uncaught TypeError (a + '').toString() ? // 'undefined' 当null调用时也会报错 var a = null; a.toString(); ? ? ? //?Uncaught TypeError (a + '').toString() ? // 'null' 当函数调用时,会打印整个函数的字符串形式 var fn = function() { console.log(); } fn.toString() ? ? //?"function () { ? ? ? ? ? ? ? ? ? // ? ? console.log(); ? ? ? ? ? ? ? ? ? // }" 当日期对象调用时,会打印当前时间 var time = new Date(); time.toString() ? ? ? ?//?"Mon Sep 05 2016 18:57:24 GMT+0800 (中国标准时间)" 综上,当null和undefined以及数字时会报错,所以兼容的方法就是 (a + '').toString() 这样的话,就不会出现报错现象了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |