基本介绍

javascript中的toString方法是我们在写前端时经常要用的一个函数,也就是将我们的变量转换成字符串的方法。

javascript中各种类型的toString方法

javascript中定义了7种数据类型,其中包含了6种原始的数据类型:Boolean Null Undefined Number String Symbol(ECMAScript 6 新定义)和 Object,在这7中数据类型中,除了undefined和null类型之外,都有toString方法。

Boolean 类型的toString()

对于Boolean对象或值,内置的 toString 方法返回字符串 "true" 或 "false",具体返回哪个取决于布尔对象的值。

Number类型的toString()

Number对象的toString方法返回指定 Number 对象的字符串表示形式。其toString方法可以传递一个参数radix,这个参数的值得取值范围为(2到36)表示进行toString时候所选用的进制,默认情况下选用10进制,如果radix的值不在2到36之间的话,则会抛出一个异常。

如果Number对象的toString方法的进制大于10的话,则会用字母代替,这就是为什么最大值为36了,其实就是0到9这十个数字再加上26个英文字母。如果对象为负数则保留负号。

var count = 10;
console.log(count.toString());    // 输出 '10'
console.log((17).toString());     // 输出 '17'
console.log((17.2).toString());   // 输出 '17.2'
var x = 6;
console.log(x.toString(2));       // 输出 '110'
console.log((254).toString(16));  // 输出 'fe'
console.log((35).toString(36));   // 输出 'z'
console.log((-10).toString(2));   // 输出 '-1010'
console.log((-0xff).toString(2)); // 输出 '-11111111'
console.log((-12.111).toString(16)) // 输出 '-c.1c6a7ef9db23'

针对于数字的toString,其实还有一些坑需要爬:

  • 如归对数字直接使用toString方法的话,浏览器会报错这个时候就需要我们用括号将数字个扩起来,再进行toString,这是因为javascript引擎在解释代码时对于“1.toString()”认为“.”是浮点符号,但因小数点后面的字符是非法的,所以报语法错误;而后面的“1..toString()和1.2.toStirng()”写法,javascript引擎认为第一个“.”小数点,的二个为属性访问语法,所以都能正确解释执行;对于“(1).toStirng()”的写法,用“()”排除了“.”被视为小数点的语法解释,所以这种写法能够被解释执行;

  • 纯小数的小数点后面有连续6或6个以上的“0”时,小数将用e表示法进行输出;

var num = 0.000006;//小数点后面有5个“0”
console.log(num.toString());//"0.000006"
var num = 0.0000006;//小数点后面有6个“0”
console.log(num.toString());//"6e-7"
  • 浮点数整数部分的位数大于21时,输出时采用e表示法

ar num = 1234567890123456789012;
console.log(num.toString());//"1.2345678901234568e+21"

String 类型的toString()

String 类型的toString() 方法返回指定对象的字符串形式。

var str = 'nihao'
console.log(str.toString()) // 输出nihao

object 类型的toString()

对于object类型,也就是对象类型。每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。

可以自定义一个方法来取代默认的 toString() 方法。该 toString() 方法不能传入参数并且必须返回一个字符串。自定义的 toString() 方法可以是任何需要的值,但如果它附带有关对象的信息,它将变的非常有用。

例如

function Dog(name,breed,color,sex) {this.name=name;this.breed=breed;this.color=color;this.sex=sex;
}var theDog = new Dog("Gabby","Lab","chocolate","female");

如果使用theDog.toString()的话,则会返回出来一个'[object Object]',接下来定义一toString方法来覆盖object自带的toString方法:

Dog.prototype.toString = function dogToString() {var ret = "Dog " + this.name + " is a " + this.sex + " " + this.color + " " + this.breed;return ret;
}

然后使用toString则返回 "Dog Gabby is a female chocolate Lab"

对于object的toString方法来说们不仅仅是将一个对象转换成'[object Object]'这个用途,其实很多时候会使用object.toString.call()来检测变量的类型。

var toString = Object.prototype.toString;toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

所以很多时候我们能够通过toString这个方法来做一些类型检测的工作。

数组类型的toString

对于数组的toString方法,其实有一个不同的地方,就是在我们调用数组的toString方法的时候。其实是调用数组中的每个元素的toString方法,最后将结果串联起来。

[new Date(), 123, '23'].toString() // Wed May 20 2020 08:50:49 GMT+0800 (中国标准时间),123,23
[{}, 123].toString() // [object Object],123
[1,2, [3, 4]].toString() // 1,2,3,4

从上面的例子中,我们会发现一个如果是多维数组,通过toString转换出来的结果其实和一维数组调用toString转换出来的结果是一样的。这个时候我们就能考虑到数组的toString的另外一个用法就是可以将多维数组一维化(或者说是数组的扁平化),其实这个将数组进行一维化的方是有一个弊端的,就是不区分数字类型的值字符串的值举个例子:

[1, [2,3,4]].toString() // 1,2,3,4
['1', [2, '3', 4]].toString() // 1,2,3,4

分类

javascript中的toString()相关推荐

  1. JavaScript中的toString()方法

    toString()方法 Boolean对象使用toString(),如果布尔值是true,则返回"true".否则返回"false": Date对象使用toS ...

  2. JS中重写toString方法

    JavaScript中重写toString方法: <script type="text/javascript">function Person(age,name){th ...

  3. JavaScript中的部分函数/方法参考

    目录 1.Object.defineProperty方法 2.for.for...in.for...of.forEach方法 for循环(可使用return.break等来中断循环) forEach循 ...

  4. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. <一>, ECMAScript 3  1. 在E ...

  5. Javascript中的valueOf与toString

    基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下. t ...

  6. javascript中数据类型及转换、String()和toString()的区别

    数据类型: JavaScript中的数据类型: 在计算机中,不同的数据类型所占的储存空间是不同的.1.原始数据类型:number (数字).string(字符串).boolean(布尔值).null( ...

  7. 在Javascript中使用面向对象的编程

    by Mike Koss March 26th, 2003 这是一篇,我个人认为最好的,Javascript面向对象编程的文章.翻译不好的地方,还望大家指正,谢谢. 如果您需要,可以访问下面的地址取得 ...

  8. [译]JavaScript中,{}+{}等于多少?

    最近,Gary Bernhardt在一个简短的演讲视频"Wat"中指出了一个有趣的JavaScript怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解 ...

  9. JavaScript中双叹号(!!)和单叹号(!)

    转自:JavaScript中双叹号(!!)作用 经常看到这样的例子: var a: var b=!!a; a默认是undefined.!a是true,!!a则是false,所以b的值是false,而不 ...

最新文章

  1. 教育园报修系统_【务实活动】“充电”模式强力开启,务实幼教2019暑期小红巾生存教育大培训...
  2. python显示无效语法怎么处理-python – 无效语法(对于循环括号/括号)
  3. c语言对空指针memcpy,C语言memcpy 断错误
  4. VCAP-DCA 510 经验分享
  5. TRY NOT TO SAY SO MUCH!
  6. Linux rsync远程文件同步工具:只对差异文件进行更新
  7. 机票预定系统类图_电商系统延时任务机制源码分享
  8. Software--Architecture--Design
  9. 把列表变成列向量_线性代数的本质11 抽象向量空间
  10. react开发模式_通过开发带有精灵动画的游戏来学习高级React模式
  11. 云计算三重奏:SAAS、PAAS和IAAS
  12. soul刷屏编程代码_奔涌吧,编程!少儿编程教育在未来会像语文,数学一样重要!...
  13. 20-21-2网络管理quiz6
  14. 微软应用商店应用无法联网_微软,诺基亚应用商店-即将开业!
  15. 接口测试用例设计思路_最全测试用例设计方法~思路分析
  16. 服务器开机风扇转但无显示,电脑开机主机风扇在转,显示器却显示无信号是怎么回事?...
  17. 何为民间IP,小游戏竟然还可以这样做?脑洞大开
  18. Nature:每两个月注射一次卡波替格拉韦可以让大多数人免受艾滋病毒
  19. 藏书馆APP产品分析报告
  20. iOS App Store 上传项目报 隐私政策网址(URL)!~解决方法

热门文章

  1. 微尘网络安全之---LXL角色信息详细分析
  2. 100TB大数据存储方案
  3. K-means聚类算法实战
  4. 机器学习系列(9)_决策树详解01
  5. ryzen linux 搭配显卡,锐龙R5 1500X处理器与显卡搭配
  6. 关于AI行业创业的6个问题
  7. OS X El Capitan U盘安装
  8. 智慧工地:打造建筑产业2022最新版互联网平台
  9. Android cpu架构类型升级方案调研
  10. 银河系中央超大黑洞可能是个虫洞 其连接着两个不同的时空。