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,2,3,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()
这样的话,就不会出现报错现象了。