javascript的toString深入探究
toString()方法是所有对象都有的一个方法,无论是字符串,数组,对象,都可以调用这个方法,但是,事实上,他们调用的并不是同一个函数哦! 看下面的代码:
var str = '123'; console.log(Object.prototype.toString===str.toString); //false
console.log(String.prototype.toString===str.toString); //true
console.log(Object.prototype.toString.call(str)); //'[object String]'
console.log(str.toString()); //'123'
可以看到,这里的str.toString是调用了String.protype.toString方法,而不是Object.prototype.toString方法
再看下面这段代码:
var arr = [1,2,3]; console.log(Object.prototype.toString===arr.toString); //false
console.log(Array.prototype.toString===arr.toString); //true
console.log(Object.prototype.toString.call(arr)); //'[object Array]'
console.log(arr.toString()); //'1,2,3'
可以看到,这里的arr.toString是调用了Array.prototype.toString方法,而不是Object.prototype.toString方法
var obj = {name:'bunny'}; console.log(Object.prototype.toString===obj.toString); //true
console.log(Object.prototype.toString.call(obj)); //'[object Object]'
console.log(obj.toString()); //'[object Object]'
可以看到,对于obj来说,它调用的toString方法就是Object.prototype.toString方法.
同样,数值类型,还有函数,都类似于这样...就不再举例了...
另外,null没有toString方法:
var nu = null;
console.log(nu.toString); //报错
但是它可以调用其它的toString方法:
var nu=null;
Object.prototype.toString.call(nu) //'[object Null]'
所以我们可以知道,在Array的原型,String的原型上,以及Number的原型,Function的原型上,都有自己的toString方法,不同类型的对象,会调用不同的toString方法,而不会去调用Object.prototype.toString.
当时,我们可以通过call函数来调用Object.prototype.toString函数,用这个方法,可以精确的获取对象的类型:
'[object Object]'
'[object Array]'
'[object String]'
'[object Number]'
'[object Function]'
'[object Undefined]'
'[object Null]'
比如一个判断对象是否为数组的函数:
if(Array.isArray===undefined){
Array.isArray = function(obj){
return Object.prototype.toString.call(obj) === '[object Array]'
}
}
javascript的toString深入探究的更多相关文章
- JavaScript parseInt() toString()函数
parseInt(string, radix) string:必需.要被解析的字符串 radix:可选.表示要解析的数字的基数.该值介于 2 ~ 36 之间. 如果省略该参数或其值为 0,则数字将以 ...
- javascript之toString()和valueOf()函数
1.我们为什么要了解这两种方法 众所周知,toString()函数和valueOf函数,这两个函数是Object类的对象生来就拥有的,而且他们还可以允许我们重写,那么,这两个函数到底有什么用呢? 从名 ...
- JavaScript的toString()
JavaScript toString() 方法 JavaScript Boolean 对象 定义和用法 toString() 方法可把一个逻辑值转换为字符串,并返回结果. 语法 booleanObj ...
- JavaScript异步编程解决方案探究
javascript的天生单线程特性,使得异步编程对它异常重要,早期的通常做法是用回调函数来解决.但是随着逻辑的复杂,和javascript在服务端的大显神通,使得我们很容易就陷入“回调陷井”的万丈深 ...
- JavaScript的toString()和valueof()方法
toString()方法: 函数:函数 (function(){}).toString(); //返回"function(){}" typeof((function(){}).to ...
- javascript中toString和valueOf方法的区别
toString():将对象转为字符串 valueOf():获取对象的原始值, 1.针对基本类型的变量:如在string,number,boolean类型的变量上调用这两个方法时,直接返回原始值,即变 ...
- 在javascript中toString 和valueOf的区别
1.toString()方法:主要用于Array.Boolean.Date.Error.Function.Number等对象转化为字符串形式.日期类的toString()方法返回一个可读的日期和字符串 ...
- JavaScript toString、String和stringify方法区别
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- JavaScript中的valueOf与toString方法
基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题. JavaScript 的 valueOf() 方法 valu ...
随机推荐
- 基于Windows下使用Docker 部署Redis
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 1 去官网下载指定的版本 https:/ ...
- ArcGIS空间参考概述
摘要:在地理数据库中,坐标系和其他相关空间属性被定义为各数据集的空间参考的一部分.空间参考是用于存储各要素类和栅格数据集,以及其他坐标属性(例如,x,y 坐标的坐标分辨率及可选的 z 坐标和测量 (m ...
- Linux-TCP 出现 RST 的几种情况
导致“Connection reset”的原因是服务器端因为某种原因关闭了Connection,而客户端依然在读写数据,此时服务器会返回复位标志“RST”,然后此时客户端就会提示“java.net.S ...
- xshell连接centos vi编辑器不能使用小键盘
莫名其妙的本人的xshell,在vim编辑脚本的时候,右侧小键盘无法输出数字,输出的都是一些字母,而且还是一个字母占一行,太过艹蛋! 后来就按照正规的操作步骤,又重建了连接,居然发现正常了! 百思一虑 ...
- hibernate关联映射注解
转自:hibernate annotation注解方式来处理映射关系 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说 ...
- linux shell 脚本攻略学习6-xargs详解
xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题. 例如,下面的命令: rm `find /path -type f` ...
- Eclipse Java注释模板设置简介,更改字体大小
为类添加注释:此为我的模板设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments ...
- 路由器下CLI界面
CLI(command-line interface,命令行界面)是指可在用户提示符下键入可执行指令的界面. CLI是Command Line Interface的缩写,即命令行界面.CLI界面是所有 ...
- kafka负载均衡相关资料收集(二)
[转]关于kafka producer 分区策略的思考 from:http://blog.csdn.net/ouyang111222/article/details/51086037 今天跑了一个简单 ...
- TCP/IP 详解7 Ping指令
首先介绍一下ping 指令的基本过程:(这部分摘自网络) 我们以下面一个网络为例:有A.B.C.D四台机子,一台路由RA,子网掩码均为255.255.255.0,默认路由为192.168.0.1 1. ...