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({}));       // '{}'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 2,550评论 1 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,981评论 19 139
  • JS使用技巧专题 1开发技巧 1.1函数使用 1.1.1函数声明方式 JS函数的写法总结 http://blog....
    Kevin_Junbaozi阅读 1,110评论 0 11
  • 这两天感情特别脆弱,不知道是因为大姨妈拜访还是因为看了《一条狗的使命》打开了泪闸,一点点的小情绪都会导致默默地...
    二拾三阅读 252评论 0 0
  • 当我们慢慢长大,有些棱角已经渐渐磨平,那些本身可以上面与众不同不一定地东西,在我们看似努力合群时慢慢褪去。我们本为...
    找己阅读 367评论 0 0