美文网首页
JavaScript:转换为字符串函数

JavaScript:转换为字符串函数

作者: 勇往直前888 | 来源:发表于2017-05-03 15:43 被阅读197次

    JavaScript转字符串,主要有三种方式
    (1)object.toString()成员函数
    (2)String(object)全局函数
    (3)JSON.stringify(object)静态函数

    object.toString()成员函数

    • 适用于基本类型
    • nullundefined会报错
    • Number类型可以指定进制基数,这是特色
    var num = 10;
    num.toString();       // '10',默认是十进制
    num.toString(2);       // '1010'
    num.toString(8);       // '12'
    num.toString(10);       // '10'
    num.toString(16);       // 'a'
    
    • 直接数字字面量不能用,比如
    10.toString();        // 报错
    

    String(object)全局函数

    • 双重身份,首先是字符类型的构造函数,比如
    var a = new String('abcd');
    a instanceof String;   // true
    
    • 参数可以是nullundefined

    • 一般情况下,内部直接调用object.toString()成员函数完成转换,但是没有指定进制基数的功能

    • 对于自定义的类型,输出'[object Object]',信息丢失严重,是缺陷

    var student = new Object(); 
    student.name = "Lanny"; 
    student.age = "25"; 
    student.location = "China"; 
    String(student);   // "[object Object]"
    
    • 对于数组,相当于调用arrayObject.join(',');。最外面的[]被忽略。
    String([1,2,3]);              // "1,2,3"
    String(["hello", "world"]);   // "hello,world"
    

    JS中将一个值转换为字符串的方法

    JSON.stringify(object)静态函数

    • 专门用于字典,就是普通的自定义对象,能打印出所有的信息。这个比用for-in结构循环来遍历属性,变相转化为字符串要方便多了。
    var student = new Object(); 
    student.name = "Lanny"; 
    student.age = "25"; 
    student.location = "China"; 
    var json = JSON.stringify(student); 
    console.log(json);  // {"name":"Lanny","age":"25","location":"China"}
    
    • 对于数组,能够保留最外面的[],相比较而言,信息更保真
    var arr = ["a", "b", "c"];
    var str = JSON.stringify(arr);
    console.log(str);  // `["a","b","c"]`
    String(arr);       // "a,b,c"
    

    JS 对象(Object)和字符串(String)互转

    关于JS中的JSON

    JavaScript JSON

    全局函数工具

    • 对于字典(自定义类型)和数组,用JSON.stringify(object)静态函数

    • 其他类型,用String(object)全局函数

    • 为了和系统的object.toString()成员函数相区别,取名叫globalToString(object)

    • 实现文件global_to_string.js内容:

    module.exports = function globalToString(object) {
        var type = typeString(object);
        if (type === 'object' || type === 'array') {
            return JSON.stringify(object);
        } else {
            return String(object);
        }
    }
    
    // private
    function typeString(object) {
        const string = Object.prototype.toString.call(object);
        return string.substring(8, string.length - 1).toLowerCase();
    }
    
    • 测试文件global_to_string_test.js内容:
    const getString = require('./global_to_string');
    const log = console.log;
    
    // 基本类型
    log(getString(null));        // 'null'
    log(getString(undefined));   // 'undefined'
    log(getString(10));          // '10'
    log(getString(true));        // 'true'
    log(getString('abc'));       // 'abc'
    var object;
    log(getString(object));      // 'undefined'
    log(getString());            // 'undefined'
    
    // 数组
    log(getString(["hello", "world"]));  // '["hello","world"]'
    log(getString([]));                  // '[]'
    
    // 自定义对象
    var student = new Object(); 
    student.name = "Lanny"; 
    student.age = "25"; 
    student.location = "China"; 
    log(getString(student));  // '{"name":"Lanny","age":"25","location":"China"}'
    log(getString({}));       // '{}'
    

    相关文章

      网友评论

          本文标题:JavaScript:转换为字符串函数

          本文链接:https://www.haomeiwen.com/subject/giwktxtx.html