JavaScript:转换为字符串函数

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:转换为字符串函数)