博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各类型的 toString 方法合集
阅读量:6801 次
发布时间:2019-06-26

本文共 2288 字,大约阅读时间需要 7 分钟。

toString()

Object.prototype.toString()Array.prototype.toString()Boolean.prototype.toString()RegExp.prototype.toString()String.prototype.toString()Number.prototype.toString()Function.prototype.toString()Date.prototype.toString()

Array,Boolean,RegExp,String,Number,Function,Date这些都是覆盖了 ObjecttoString 方法

Object.prototype.toString()

返回一个表示该对象的字符串

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

可以覆盖默认的 toString 方法

toString() 方法不能传入参数, 必须要返回一个字符串

function Person(name, age) {  this.name = name  this.age = age}Person.prototype.toString = function() {  return 'my name is ' + this.name + ', my age is ' + this.age}var fe = new Person('fe_feng', 23)fe.toString() // "my name is fe_feng, my age is 23"

使用 toString() 检测对象类型

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.5toString.call(undefined); // [object Undefined]toString.call(null); // [object Null]

Boolean.prototype.toString()

返回指定的布尔对象的字符串形式

返回值为 "true" 或者 "false"
Boolean 对象覆盖了 Object 对象的 toString 方法
没有继承 Object.prototype.toString()
当一个 Boolean 对象作为文本值或进行字符串连接时, JS会自动调用其 toString 方法

'1' + true  // "1true"

Array.prototype.toString()

返回一个表示指定的数组及其元素的字符串。

Array 对象覆盖了 ObjecttoString 方法
toString 方法连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素

运用这个方法,可以处理数组扁平化, 不过有一些限制。

  • 当数组元素都是字符串时,扁平化处理很简单
function flatten(arr) {    return arr.toString().split(',')}
  • 当数组元素都是数字时,扁平化处理如下
function flatten(arr) {  return arr.toString().split(',').map(item => +item)}
  • 当数组元素不确定时候,这个方法就不行了(返回的数组会改变原数组对象)

Number.prototype.toString()

返回指定 Number 对象的字符串表示形式

numObj.toString([radix]) // radix: 指定要用于数字到字符串的转换的基数(从2到36)。如果未指定 radix 参数,则默认值为 10。// 如果 toString() 的 radix 参数不在 2 到 36 之间,将会抛出一个 RangeError。
栗子来源 MDN
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((-10).toString(2));   // 输出 '-1010'console.log((-0xff).toString(2)); // 输出 '-11111111'

转载地址:http://unywl.baihongyu.com/

你可能感兴趣的文章
聚会留念
查看>>
iOS:在使用Cocoapods安装shareSDK时出现的link路径错误
查看>>
Asp.net防止页面被多次提交
查看>>
ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
查看>>
敏捷的 "道"
查看>>
ZigBee On Windows Mobile--1.背景和结构
查看>>
这两天说到的苹果软件中毒是个什么情况?
查看>>
IOS的消息传递机制,使用NSNotificationCenter进行通信,很实用
查看>>
开始使用Emacs
查看>>
Qt Creator + MinGW 在windows 下的调试
查看>>
sql server中filegroup与partition解析
查看>>
转 Spring.NET 与 NHibernate 的整合
查看>>
TNS-01190故障的处理
查看>>
C++ Exercises(十)
查看>>
《kali linux 渗透测试初级教程》免费下载
查看>>
[Oracle]PDB Clone 方法
查看>>
JavaScript词法作用域与调用对象
查看>>
当谈论设备指纹时,我们到底在说什么?(转)
查看>>
Python天天美味(10) - 除法小技巧
查看>>
webrtc进阶-信令篇-之三:信令、stun、turn、ice
查看>>