简单说 JavaScript中的tostring( ) 与 valueOf( )方法

ICode竞赛Python一级通关秘籍:用for循环和变量控制飞船与Dev的移动(附完整代码解析) 本文详细解析了ICode竞赛Python一级中for循环和变量的关键应用,通过控制飞船(Spaceship)和开发者角色(Dev)的移动任务,帮助初学者掌握代码逻辑。文章包含完整代码解析、常见误区分析和调试技巧,是通关ICode竞赛的实用指南。 阅读详情

说明

所有的对象都继承有toString() 和 valueOf() 方法,对象到字符串,对象到数字的转换,会通过调用待转换对象的这两个方法中的一个来完成。

解释

toString( )方法的作用是:

返回一个反映这个对象的字符串,而很多类都定义了不同版本的toString( )。

对象|操作
-|-|-
默认 | 返回 “[object class]”,其中 class是对象类型的名称。其中class是该对象的类:值为"Object"、“String”、“Number”、“Function”、“Window”、“Document”、等。
Array | 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。
Boolean | 如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。
Date | 返回日期的文字表示法。
Error | 返回一个包含相关错误消息的字符串。
Function | 返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称:function functionname( ) { [native code] }
RegExp | 返回正则表达式直接量的字符串
Number | 返回数字的文字表示。
String | 返回 String 对象的值。

({}.toString());       //=>  "[object Object]"   
[1,2].toString();      //=>  "1,2"   
true.toString();       //=>  "true"    
new Date(1970,0,1).toString();  //=>  "Thu Jan 01 1970 00:00:00 GMT+0800 (CST)"    

Error("一个错误信息").toString();    //=>  "Error: 一个错误信息"    

(function (x){return x}).toString();   //=>  "function (x){return x}"     

/\d/.toString();    //=>  "/\\d/"  或者 "/\d/" 浏览器不同返回也可能会不同
valueOf() 方法,它的作用是:

如果对象存在任意原始值,它就默认将对象转换为表示它的原始值,如果对象是复合值,而且大多数对象无法真正表示为一个原始值,因此默认的valueOf( )方法简单地返回对象本身,而不是返回一个原始值。

数组、函数、和正则表达式简单的继承了这个默认方法,调用这些类型的实例的valueOf( )方法只是简答返回对象本身。

日期类定义的valueOf( )方法会返回它的一个内部表示:1970年1月1日以来的毫秒数。

[1,2].valueOf();  //=>  [1,2]  

(function (){}).valueOf();   //=>  function (){}

/\d/.valueOf();    //=>  /\d/  

new Date().valueOf();   //=>  1502941383029

原始值:不可变更的值,包括undefined、null、布尔值、数字、和字符串。
看下面这张图,列出了一些基本的类型转换,这张图来自 JavaScript权威指南。
这里写图片描述

好了,我们现在已经了解toString( )方法 和 valueOf( )方法了,下来我们来说说,对象到字符串和对象到数字的转换。

对象到字符串的转换:

1、如果对象具有toString( )方法,则调用这个方法。如果她返回一个原始值,JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果。
2、如果对象没有toString( )方法,或者这个方法并不返回一个原始值,那么JavaScript会调用valueOf( )方法。如果存在这个方法,则JavaScript调用它。如果返回值是原始值,JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果。
3、否则,JavaScript无法从toString()或者valueOf( )获得一个原始值,因此这时它将抛出一个类型错误异常。

这里写图片描述

对象到数字的转换:

1、如果对象具有valueOf( )方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字(如果需要的话)并返回这个数字。
2、否则,如果对象具有toString( )方法,后者返回一个原始值,则JavaScript将其转化并返回。
3、否则,JavaScript抛出一个类型错误异常。

这里写图片描述

所以这就解释了,为什么空数组会被转换为数字0,为什么具有单个元素的数组同样会转换成一个数字。
数组继承了默认的valueOf( )方法,这个方法返回一个对象而不是一个原始值,因此,数组到数字的转换则调用toString( )方法。空数组转换为空字符串,空字符串转换为数字0。
含有一个元素的数组转换为字符串的结果和这个元素转换字符串的结果一样。
如果数组只包含一个数字元素,这个数字转换为字符串,在转换回数字。

JavaScript中的"+“运算符可以进行数学加法和字符串连接操作。如果它的其中一个操作数是对象,则JavaScript将使用特殊的方法将对象转换为原始值,而不是使用其他算术运算符的方法执行对象到数字的转换,”= ="相等运算符与此类似。如果将对象和一个原始值比较,则转换将会遵照对象到原始值的转换方式进行。

“+” 和 "= ="应用的对象到原始值的转换包含日期对象的一种特殊情形。日期类是JavaScript语言核心中唯一的预先定义类型,它定义了有意义的向字符串和数字类型的转换。
对于所有非日期的对象来说,对象到原始值的转换基本上是对象到数字的转换(首先调用valueOf( )),日期对象则使用对象到字符串的转换模式,然而,这里的转换和上文讲述的并不完全一致:通过valueOf( )或者toString( )返回的原始值将被直接使用,而不会被强制转换为数字或字符串。

和"= =“一样,”<"运算符以及其他关系运算符也会做对象到原始值的转换,但要除去日期对象的特殊情形:任何对象都会首先尝试调用valueOf( ),然后调用toString( )。不管得到的原始值是否直接使用,它都不会进一步被转换为数字或字符串。

总结

本文说了说 toString( )方法 和 valueOf( )方法的基础知识,文中的许多概念是出自JavaScript权威指南一书,大家可以多看看书。
如果这篇文章理解了,大家可以看看下面这两篇文章,相信你会知道更多有趣的事。
简单说 !![]==true 与 []==true 引发的思考
简单说 通过JS的隐式转换,关键时刻救你一命

JavaScript中的String valueOf方法和示例 请注意,如果我们直接将字符串对象与原始字符串进行比较,JavaScript会自动将字符串对象转换为原始字符串,因此比较结果将为。当在字符串对象上调用valueOf方法时,它将返回该字符串的原始值,即字符串本身。这个方法经常在JavaScript中隐式调用,因为在许多情况下,字符串对象会被自动转换为原始字符串。方法,因为在许多上下文中,字符串对象会自动转换为原始字符串。例如,使用字符串对象进行字符串拼接、赋值给变量或作为函数的参数时,JavaScript会自动提取原始值。)比较原始值和字符串对象。 阅读详情

相关推荐

JavaScript toString() 方法详解

toString()方法是JavaScript中常用的方法之一,用于将对象转换为字符串。在上面的示例中,我们定义了一个Person构造函数,该函数接受name和age参数,并将它们分配给新创建的对象的属性。JavaScript中的toString()方法是一个内置函数,用于将指定对象转换为字符串。在上面的示例中,我们尝试对null和undefined值调用toString()方法,但由于这些值不是对象,因此会抛出TypeError。,并使用toString()方法将其转换为字符串。是要转换为字符串的对象。

CsCufft的博客 629

JavaScript 之 toString()方法详解

​在 JavaScript 中,toString() 方法是很多数据类型内置的方法,它被用于将特定的数据类型转换为字符串。但是在不同的数据类型中的作用并非完全相同,下面就来详细讲解一下 toString() 方法在各种数据类型中的使用和作用。

weixin_45092437的博客 1万+

电流镜结构实战:从零理解MOS管偏置电路设计(附吴金课程补充)

本文深入解析电流镜结构在MOS管偏置电路设计中的关键作用,从基本原理到实战应用全面覆盖。通过分析偏置电路的核心原理、破解设计难题的实用技巧,以及进阶优化策略,帮助工程师掌握这一模拟电路设计的核心技术。特别适合需要理解电流镜结构和基准电路设计的读者参考学习。

ujm5678901的博客 256

JavaScript中的toString方法详解

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

天书笔记 2万+

傅里叶变换实战:用Python手把手教你分析音频频谱(附完整代码)

本文详细介绍了如何使用Python实现傅里叶变换进行音频频谱分析,涵盖音频加载、预处理、FFT应用、频谱可视化及特征提取等关键步骤。通过实战案例和完整代码,帮助开发者掌握数字信号处理技术,特别适合音频分析和音乐信息检索领域的应用。

weixin_29090677的博客 150

保姆级教程:手把手教你用CANoe/CANalyzer读取汽车故障码(UDS 0x19服务实战)

本文提供了一份详细的CANoe/CANalyzer使用教程,指导如何通过UDS 0x19服务读取汽车故障码。从硬件配置到报文构建,再到故障码解析,手把手教你完成汽车诊断全流程,特别适合汽车电子工程师和诊断开发人员。

weixin_42524945的博客 261

java script valueof_简单说 JavaScript中的tostring( ) 与 valueOf( )方法

说明所有的对象都继承有toString() 和 valueOf() 方法,对象到字符串,对象到数字的转换,会通过调用待转换对象的这两个方法中的一个来完成。解释toString( )方法的作用是:返回一个反映这个对象的字符串,而很多类都定义了不同版本的toString( )。对象操作默认返回 “[object class]”,其中 class是对象类型的名称。其中class是该对象的类:值为"Obj...

weixin_32256861的博客 167

计算机网络之NAT的解释与实验配置

NAT 静态NAT 动态NAT easy_ip NAT服务器映射

爱学习的JackYang的博客 1918

函数 tostring_简单说 JavaScript中的tostring( ) 与 valueOf( )方法

说明所有的对象都继承有toString() 和 valueOf() 方法,对象到字符串,对象到数字的转换,会通过调用待转换对象的这两个方法中的一个来完成。解释toString( )方法的作用是:返回一个反映这个对象的字符串,而很多类都定义了不同版本的toString( )。对象操作({}.toString()); //=> "[object Object]" [1,2]....

weixin_39939668的博客 148

手把手保姆级|Python爬取微信公众号文章完整版,反反爬策略拉满,附可运行完整代码(永久可用)

做Python爬虫的朋友都知道,爬取微信公众号文章 绝对是爬虫领域的「香饽饽」也是「硬骨头」。一方面,微信公众号的文章是极具价值的数据源:不管是自媒体从业者做竞品分析、新媒体运营者整理干货、还是个人学习收集资料,都需要批量爬取公众号文章;另一方面,微信的反爬机制堪称全网最严苛之一 ——腾讯对微信生态的风控做到了极致,动态渲染页面、高频IP封禁、Cookie短时效失效、请求头严格校验、自动化工具秒识别、频繁请求直接拉黑,这些反爬手段让90%的爬虫新手望而却步:要么爬了几篇就被封IP,要么Cookie失效爬取中

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2630

代码复现3—VLN-CE

运行训练完后在 data文件下会自动生成一个“checkpoints”文件,文件下包含任务文件“seq2seq”,该文件下会包括训练出来的权重和评估结果。数据集下载完后路径提取:data/scene_datasets/mp3d/{scene}/{scene}.glb。注意这里下载的数据集并不是所有的matterport3d,只需要一部分,包含90个场景,大小压缩后约16G。在“eval”时,会在data文件下生成videos文件,里面存放的是可视化的轨迹视频。

qq_44100524的博客 3202

简单说 JavaScript中的tostring( ) 与 valueOf( )方法,我把所有前端框架整理成了PDF

本文说了说 toString( )方法 和 valueOf( )方法的基础知识,文中的许多概念是出自JavaScript权威指南一书,大家可以多看看书。自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

2301_76225520的博客 675

1、电路分析知识全解析:从基础到实践应用

本博客全面解析电路分析知识体系,涵盖从基础的电压、电流、电阻概念到复杂的交流电路、瞬态分析和高级应用如滤波器与变压器等内容。适合电子技术专业学生和技术爱好者学习,提供详细的知识结构、学习路径、实践示例以及丰富的学习资源,包括计算机模拟工具Multisim和PSpice的使用指导。通过理论与实践结合,帮助学习者掌握电路分析的核心技能,为电子工程和电力系统等相关领域打下坚实基础。

iii12的专栏 159

JavaScript中的valueOf和toString方法

JavaScript中的valueOf和toString方法是将对象转换为字符串的两种方法。这两种方法虽然看起来非常简单,但是在实际的开发中,它们发挥着非常重要的作用。valueOf方法返回对象的原始值toString方法将对象转换为字符串并返回字符串。理解这两种方法的区别和用法,能够帮助我们更好地操作JavaScript中的对象及其属性,编写更高效、可维护的代码。valueOf方法是JavaScript中所有对象继承的方法之一,用于将一个对象转换为其原始值。

你若盛开,清风自来 1273

达梦数据库修改最大连接数

达梦数据库的最大连接数推荐配置与服务器内存有关。不应设置得过大,否则容易导致出现OOM。文件中整型的参数值。DSC环境下,除了特殊参数以外,其他参数值会在OK节点上同步。返回值:当前DM.INI文件中对应的参数值。功能说明:返回DM.INI文件中。:DM.INI文件中的参数名。

Sebastien23的博客 3336

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

toString与valueOf区别

对应视频分享:点击进入 基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null和undefined除外。它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下。 为什么基本数据类型也有方法: 有人说上面这都是基本操作,看这个干嘛,但是想一想,好像有点不对,这几个好像还有别的兄弟姐妹啊,如Undefined, Null, Boolean, Number和String这几个,有谁去了解过这几个构造函数吗 接下来我们就要用到这个东西

我们一起学前端 3879

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

valueOf与toString

valueOf与toString valueOf和toString是Object.prototype上的方法,在Js几乎所有的对象都会继承自Object,同样由于包装对象的原因,几乎所有的数据类型都能够调用这两个方法,无法调用的有例如null、undefined以及Object.create(null)创建的对象等,通常我们一般不会主动调用这两个方法,而在代码执行的过程中这两个方法会经常被偷偷的调用,而且在不同的情况下会有选择的进行调用。 valueOf JavaScript通过调用valueOf方法将对象

WindRunnerMax 1340

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JS中toString()和valueOf()的用法及两者的区别

基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题。 1.用法如下: toString()方法:返回对象的字符串表示。 对象 操作 Array 将Array的元素转换为字符串。结果字符串由逗号分隔,且连接起来。 Boolean 如果 Boolean 值是true,则返回...

微光的博客 5873

JS中的 toString 和 valueOf 方法

所有的对象都继承了这两个方法,toString() 和 valueOf()

weixin_44040583的博客 383

js中的valueOf和toString函数

js中的valueOf和toString函数 valueOf和toSring两个函数 是number、string、boolean、object、symbol原型链上共有的函数(null和undefined两种数据类型没有) 这两个函数主要是用来干什么的呢? 答案是:值运算和显示问题,一般在隐式类型转换时会自动调用。 对number、string、boolean、object、symbol数据类型调用valueOf方法,得到的都是数据本身。 (null、undefined两种类型的原型上没有valueOf

不会飞的船 593

JavaScript类型转换中的toString()和valueOf()方法

toString() 获取某个类型的数据的类型。 valueof() 获取某个类型的数据的值。

yangyang的专栏 1385

toString和valueOf

在每个对象中,都会继承两个方法:toString和valueOf toString 顾名思义,toString就是将一个对象转化为字符串类型,默认的toString方法会输出以下结果: 类型 值 原始数据类型 该咋样还是咋样,不过类型都变成了字符串类型 function 输出定义时的函数表达式(如function test (){ }) Object [object O...

weixin_43801564的博客 2334

关于Javascript中的valueOf与toString

+{ a: 1, toString: function() { return '10' }, valueOf: function() { return '100' } } 以上引申出对象数据的转换的问题:所有对象继承了两个转换方法: toString(): 它的作用是返回一个反映这个对象的字符串 valueOf():它的作用是返回它相应...

weixin_34166847的博客 130

JavaScript中valueOf函数与toString方法

基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下 JavaScript中valueOf函数方法是返回指定对象的原始值。使用方法:object.valueOf( )object是必选项参数是任意固有 JScript 对...

diaobuwei1238的博客 266
上一篇: 简单说 CSS的vertical-align
下一篇: 简单说 !![]==true 与 []==true 引发的思考
FEWY
FEWY 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄10年 504粉丝 77原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值