JS中的toString()用法,fn.toString()

转载自:http://www.zhuyuntao.cn/2016/09/05/js%E4%B8%AD%E7%9A%84tostring%E7%94%A8%E6%B3%95/

记录下来,防止以后找不到了。

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()

这样的话,就不会出现报错现象了。

你可能感兴趣的:(JS中的toString()用法,fn.toString())