js的toString方法

专栏目录请点击

toString()参数为字符串的转换基数 点击

数据类型

undefinednull

一般undefinednull,没有toString()方法,但是从ES6之后规定:null返回[object Null]undefined返回[object Undefined],当然,我们也可以用来检测一些其他的类型 点击

数组

数组调用toString,返回一个字符串,他是数组中的元素 点击

// 数组
const arr = [1,2,3]
console.log(arr.toString()) // 1,2,3

布尔值

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

字符串

字符串类型原值返回

数值

  1. 正浮点数及NaN、Infinity加引号返回,如果有-号,那么他会先执行toString方法,然后执行-号的运算
1.23.toString();//'1.23'
typeof 1.23.toString(); //string
NaN.toString();//'NaN'
Infinity.toString();//'Infinity'
-1.23.toString(); // -1.23
typeof -1.23.toString() // number
  1. 整数调用,如果整数连续调用,就必须加上括号,不然的话.会被当做小数点而报错
// 整数
0.toString() // 错误的写法
(0).toString() // 0

当然,我们在写的时候,编辑器也会给我们报错在这里插入图片描述

对象

会得到[object Object]的字符串

const obj = {}

console.log(obj.toString()) // [object Object]

类型判断

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]

自定义函数与内置函数

  1. 自定义函数会得到函数的源码
  2. 内置函数会有native code的字符串
function fn(){
    console.log("hello world");
}

console.log(fn.toString())
console.log(Function.toString())
function fn(){
    console.log("hello world");
}
function Function() { [native code] }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值