资讯专栏INFORMATION COLUMN

各类型的 toString 方法合集

geekidentity / 1703人阅读

摘要:对象覆盖了的方法方法连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素运用这个方法,可以处理数组扁平化不过有一些限制。

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.5
toString.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"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99920.html

相关文章

  • php操作mysql防止sql注入(合集)

    摘要:参考中如何防止注入参数化查询为什么能够防止注入上面提供的资料比较多,下面根据自己的理解整理出来。使用的预处理参数化查询可以有效防止注入。我们在上面预处理参数化查询是在中进行防注入操作的,其实也内置了一个预处理的模拟器,叫做。 由于segmentfault在处理特殊字符时也并非完美,所以下面文章中有些符号被转换了,请到本人博客下载原文txt http://www.yunxi365.cn/...

    kviccn 评论0 收藏0
  • JS类型(一):深入讨论“==”与“===”

    摘要:如果与相同,执行严格相等运算。如果是布尔值,返回的结果。,需要两个操作数同时转为。四附录常见的引用对象转基本类型的例子对象或者非空对象转基本类型返回数组转基本类型,返回数组元素合集组成的字符串,每个元素用,连接 一:前言 写前端代码的一个避不开的问题:== ===到底是怎么回事?下面是大众的理解: 1. ==指的是数值的相等。即使类型不一致,转化后的值相等,还是返回true2. ===...

    Wildcard 评论0 收藏0
  • 深入js隐式类型转换

    摘要:结合实际中的情况来看,有意或无意中涉及到隐式类型转换的情况还是很多的。此外当进行某些操作时,变量可以进行类型转换,我们主动进行的就是显式类型转换,另一种就是隐式类型转换了。 前言 相信刚开始了解js的时候,都会遇到 2 ==2,但 1+2 == 1+2为false的情况。这时候应该会是一脸懵逼的状态,不得不感慨js弱类型的灵活让人发指,隐式类型转换就是这么猝不及防。结合实际中的情况来看...

    tomato 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<