tostring方法怎么用_重写toString方法

tostring方法怎么用_重写toString方法[1]Undefined、Null[2]Boolean[3]String[4]Number[5]Object[6]Function[7]Array[8]Date[9]R

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前面的话

  本文将介绍toString()方法,toString()方法返回反映这个对象的字符串

 

【1】undefined和null没有toString()方法

undefined.toString();//错误
null.toString();//错误

 

【2】布尔型数据true和false返回对应的’true’和’false’

true.toString();//'true'
false.toString();//'false'
Boolean.toString();//"function Boolean() { [native code] }"

 

【3】字符串类型原值返回

'1'.toString();//'1'
''.toString();//''
'abc'.toString();//'abc'
String.toString();//"function String() { [native code] }"

 

【4】数值类型的情况较复杂

Number.toString();//"function Number() { [native code] }"

  1、正浮点数及NaN、Infinity加引号返回

1.23.toString();//'1.23'
NaN.toString();//'NaN'
Infinity.toString();//'Infinity'

  2、负浮点数或加’+’号的正浮点数直接跟上.toString(),相当于先运行toString()方法,再添加正负号,转换为数字

+1.23.toString();//1.23
typeof +1.23.toString();//'number'
-1.23.toString();//-1.23
typeof -1.23.toString();//'number'

  3、整数直接跟上.toString()形式,会报错,提示无效标记,因为整数后的点会被识别为小数点

0.toString();//Uncaught SyntaxError: Invalid or unexpected token

  因此,为了避免以上无效及报错的情况,数字在使用toString()方法时,加括号可解决

(0).toString();//'0'
(-0).toString();//'0'
(+1.2).toString();//'1.2'
(-1.2).toString();//'-1.2'
(NaN).toString();//'NaN'

  此外,数字类型的toString()方法可以接收表示转换基数(radix)的可选参数,如果不指定此参数,转换规则将是基于十进制。同样,也可以将数字转换为其他进制数(范围在2-36)

var n = 17;
n.toString();//'17'
n.toString(2);//'10001'
n.toString(8);//'21'
n.toString(10);//'17'
n.toString(12);//'15'
n.toString(16);//'11'

 

【5】对象Object类型及自定义对象类型加括号返回[object Object]

{}.toString();//报错,Unexpected token .
({}).toString();//[object Object]
({a:123}).toString();//[object Object]
Object.toString();//"function Object() { [native code] }"
function Person(){
    this.name = 'test';
}
var person1 = new Person();
person1.toString();//"[object Object]"

类型识别

  常常使用Object.prototype.toString()来进行类型识别,返回代表该对象的[object 数据类型]字符串表示

  [注意]Object.prototype.toString()可以识别标准类型及内置对象类型,但不能识别自定义类型

console.log(Object.prototype.toString.call("jerry"));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]

console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
function Person(){};
console.log(Object.prototype.toString.call(new Person));//[object Object]
function type(obj){
    return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
}
console.log(type("jerry"));//"string"
console.log(type(12));//"number"
console.log(type(true));//"boolean"
console.log(type(undefined));//"undefined"
console.log(type(null));//"null"
console.log(type({name: "jerry"}));//"object"

console.log(type(function(){}));//"function"
console.log(type([]));//"array"
console.log(type(new Date));//"date"
console.log(type(/\d/));//"regexp"
function Person(){};
console.log(type(new Person));//"object"

其他识别

  除了类型识别之外,还可以进行其他识别,如识别arguments或DOM元素

(function(){
    console.log(Object.prototype.toString.call(arguments));//[object Arguments]
})()
console.log(Object.prototype.toString.call(document));//[object HTMLDocument]

 

【6】函数Function类型返回函数代码

  当我们对一个自定义函数调用toString()方法时,可以得到该函数的源代码;如果对内置函数使用toString()方法时,会得到一个'[native code]’字符串。因此,可以使用toString()方法来区分自定义函数和内置函数

function test(){
    alert(1);//test
}
test.toString();/*"function test(){
                    alert(1);//test
                  }"*/
Function.toString();//"function Function() { [native code] }"

 

【7】数组Array类型返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串

[].toString();//''
[1].toString();//'1'
[1,2,3,4].toString();//'1,2,3,4'
Array.toString();//"function Array() { [native code] }"

 

【8】时间Date类型返回表示当前时区的时间的字符串表示

(new Date()).toString();//"Sun Jun 05 2016 10:04:53 GMT+0800 (中国标准时间)"
Date.toString();//"function Date() { [native code] }"

 

【9】正则表达式RegExp类型返回正则表达式字面量的字符串表示

/ab/i.toString();//'/ab/i'
/mom( and dad( and baby)?)?/gi.toString();//'mom( and dad( and baby)?)?/gi'
RegExp.toString();//"function RegExp() { [native code] }"

 

【10】错误Error类型

Error.toString();//"function Error() { [native code] }"
RangeError.toString();//"function RangeError() { [native code] }"
ReferenceError.toString();//"function ReferenceError() { [native code] }"
SyntaxError.toString();//"function SyntaxError() { [native code] }"
TypeError.toString();//"function TypeError() { [native code] }"
URIError.toString();//"function URIError() { [native code] }"

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168068.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 高并发解决方案之一 ——负载均衡

    高并发解决方案之一 ——负载均衡1.什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。下…

    2022年5月31日
    43
  • Linux 查看Redis 的版本

    Linux 查看Redis 的版本1.redis-server–version和redis-server-v查询结果2.redis-cli–version和redis-cli-v查询结果注:因为redis的server与cli同时安装,所以二者查出的结果基本一致。…

    2022年5月27日
    45
  • Request对象的用法「建议收藏」

    Request对象的用法「建议收藏」request对象,是浏览器访问服务器的一次请求对象,封装了http协议请求头和请求正文数据                         是一次请求,数据于多次请求是不共享的,但是请求的对象是同一个System.out.println(request); if(request.getAttribute(“name”)==null){ request.setAttribute

    2022年6月9日
    49
  • pycharm加注释的快捷方式_pycharm全部注释

    pycharm加注释的快捷方式_pycharm全部注释Ctrl+F1显示错误描述或警告信息Alt+Enter快速修正Ctrl+R替换Ctrl+Shift+F或者连续2次敲击shift全局查找{可以在整个项目中查找某个字符串什么的,如查找某个函数名字符串看之前是怎么使用这个函数的}Ctrl+Shift+R全局替换Alt+Shift+F10运行模式配置Alt+…

    2022年8月28日
    6
  • matlab之length函数[通俗易懂]

    matlab之length函数[通俗易懂]1、size获取数组的行数和列数2、length数组长度,即行数和列数中的较大值,相当于max(size(a))3、numel返回元素总数

    2022年4月27日
    100
  • v4l2驱动框架(Windows驱动开发技术详解)

    环境:OS:Ubuntu16.04(Win10hypev)KernelVersion:3.13.0-24-generic这里终极目标是注册一个/dev/video0的设备,再通过一个应用程序去读取它:#include<linux/module.h>#include<linux/videodev2.h>#include<media/v…

    2022年4月12日
    197

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号