复杂的数据类型如何转成字符串!

1.首先,会调用 valueOf 方法,如果方法的返回值是一个基本数据类型,就返回这个值,
如果调用 valueOf 方法之后的返回值仍旧是一个复杂数据类型,就会调用该对象的 toString 方法,
如果 toString 方法调用之后的返回值是一个基本数据类型,就返回这个值,
如果 toString 方法调用之后的返回值是一个复杂数据类型,就报一个错误。
 

// 1;
var obj = {valueOf: function() {return 1;}
};
console.log(obj + ""); //'1'
// 2;
var obj = {valueOf: function() {return [1, 2];}
};
console.log(obj + ""); //'[object Object]';
// 3;
var obj = {valueOf: function() {return [1, 2];},toString: function() {return 1;}
};
console.log(obj + ""); //'1';
// 4;
var obj = {valueOf: function() {return [1, 2];},toString: function() {return [1, 2, 3];}
};
console.log(obj + ""); // 报错 Uncaught TypeError: Cannot convert object to primitive value

2.括展 

var arr = [new Object(), new Date(), new RegExp(), new String(), new Number(), new Boolean(), new Function(), new Array(), Math] console.log(arr.length) // 9
for (var i = 0; i < arr.length; i++) {arr[i].valueOf = function() {return [1, 2, 3]}arr[i].toString = function() {return 'toString'}console.log(arr[i] + '')
}

1、若 return [1, 2, 3]处为 return "valueof",得到的返回值是 valueof toString 7valueof 说明:其他八种复杂数据类型是先调用 valueOf 方法,时间对象是先调用 toString 方法

2、改成 return [1, 2, 3],得到的返回值是 9toString 说明:执行 valueof 后都来执行 toString

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】linux内核dev_queue_xmit

一、中文注释 这两个函数是Linux内核网络子系统中负责发起网络包&#xff08;sk_buff结构&#xff09;传输的代码。下面我将用中文对这两个函数做一个简单的注释&#xff1a; /*** __dev_queue_xmit - 发送一个buffer* skb: 要发送的buffer* sb_dev: 子设备&#xff0c;用于层…

2023年第三届中国高校大数据挑战赛(第一场)B题思路

竞赛时间 &#xff08;1&#xff09;报名时间&#xff1a;即日起至2024年3月8日 &#xff08;2&#xff09;比赛时间&#xff1a;2024年3月9日8:00至2024年3月12日20:00 &#xff08;3&#xff09;成绩公布&#xff1a;2024年4月30日前 赛题方向&#xff1a;文本或图象分析方…

LeetCode 2834.找出美丽数组的最小和:数学(等差数列求和)——O(1)的做法

【LetMeFly】2834.找出美丽数组的最小和&#xff1a;数学&#xff08;等差数列求和&#xff09;——O(1)的做法 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-the-minimum-possible-sum-of-a-beautiful-array/ 给你两个正整数&#xff1a;n 和 target 。 如果…

【老文新说】C++读取.shp文件

本文目录 1. .shp文件简介2. shp文件格式2.1 文件头2.2 文件记录2.3 多边形的段&#xff08;Part&#xff09; 3. shp文件读写——C3.1 仓库地址3.2 代码结构简介 1. .shp文件简介 shp文件是ESRI(美国环境系统研究所公司)开发的一种用于存储和描述空间数据的文件格式&#xff…

Android打包cannot find symbol import androidx.annotation.NonNull

不知道从什么时候开始 implementation(“androidx.annotation:annotation:1.1.0jar”)会导致打包失败&#xff0c;需要改成 implementation(“androidx.annotation:annotation-jvm:1.7.0jar”) 这样就能解决Android打包类似下面的问题 cannot find symbol import androidx.ann…

12. 建立用户表并使用雪花算法生成用户ID

文章目录 一、建立用户表二、雪花算法生成唯一ID三、将雪花算法整合到我们的项目中 一、建立用户表 上一节我们搭建完了脚手架&#xff0c;从这一节开始&#xff0c;就正式进入到业务逻辑的开发了。首先要开发的就是博客系统的用户注册与登录功能。 既然涉及到用户&#xff0…

必用的10个Python装饰器

装饰器&#xff08;Decorators&#xff09;是Python中一种强大而灵活的功能&#xff0c;用于修改或增强函数或类的行为。装饰器本质上是一个函数&#xff0c;它接受另一个函数或类作为参数&#xff0c;并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外的…

Spring MVC RequestMappingHandlerAdapter原理解析

在Spring MVC框架中&#xff0c;RequestMappingHandlerAdapter是一个核心的组件&#xff0c;负责将请求映射到具体的处理器方法上&#xff0c;并调用这些方法来处理请求。其中&#xff0c;invokeHandlerMethod方法是这个适配器中的一个关键方法&#xff0c;它负责实际调用处理器…

XSS靶场-DOM型初级关卡

一、环境 XSS靶场 二、闯关 1、第一关 先看源码 使用DOM型&#xff0c;获取h2标签&#xff0c;使用innerHTML将内容插入到h2中 我们直接插入<script>标签试一下 明显插入到h2标签中了&#xff0c;为什么不显示呢&#xff1f;看一下官方文档 尽管插入进去了&#xff0…

存算一体成为突破算力瓶颈的关键技术?

大模型的训练和推理需要高性能的算力支持。以ChatGPT为例&#xff0c;据估算&#xff0c;在训练方面&#xff0c;1746亿参数的GPT-3模型大约需要375-625台8卡DGX A100服务器训练10天左右&#xff0c;对应A100 GPU数量约3000-5000张。 在推理方面&#xff0c;如果以A100 GPU单卡…

46. 【Linux教程】逻辑卷与 LVM 介绍

本小节介绍 Linux 逻辑卷&#xff0c;若标准分区上面有一个文件系统&#xff0c;想要给这个文件系统添加额外的空间时&#xff0c;可以通过将另外一个硬盘上的分区加入已有文件系统&#xff0c;Linux 中的逻辑卷管理器(LVM)软件包就可以做这个工作。 1. 逻辑卷介绍 LVM 是逻辑…

【Leetcode每日一刷】数组|双指针篇:977. 有序数组的平方、76. 最小覆盖子串(附滑动窗口法详解)

力扣每日刷题 一、977. 有序数组的平方1.1题目1.2、解题思路1.3、代码实现——C 二、76. 最小覆盖子串2.1&#xff1a;题目2.2、解题思路2.3&#xff1a;代码实现——c2.4&#xff1a;易错点 一、977. 有序数组的平方 1.1题目 [题目链接]( 1.2、解题思路 题型&#xff1a;双…

nextjs 12 和 13的区别

Next.js 12和Next.js 13在多个方面存在显著的区别。以下是一些主要的差异点&#xff1a; 1、文件夹架构和路由&#xff1a; 在Next.js 12中&#xff0c;存在名为pages的文件夹&#xff0c;其中包含一些特定命名的文件&#xff0c;如_app.ts。而在Next.js 13中&#xff0c;文件…

词语排列组合

为什么会出现这个&#xff1f; 1. 我们已进入越来越复杂的世界 2. 任何遇见的每一件事情都有复杂度&#xff0c; 3. 从小 > 大&#xff0c;从 弱 > 强&#xff0c;从有限0 > 无限 4. 主要是今天&#xff0c;用查找替换&#xff0c;发现有好多的词语组合 5. 这个词语排…

【银河商学】大蓝短视频学习02——流量突围实战

【银河商学】大蓝短视频学习02——流量突围实战 内容大纲 找对标找准你的"竞争对手" 定形式选定适合你的视频形式 做内容选题决定命运 2s上热门 一、找对标 1. 为什么要找对标 标准答案,少走弯路99%的问题,都有标准答案。 找个懂得人问一问 秒上热门,快速起号预…

思维调试:为什么FormatMessage提示找不到资源?

在不调试的情况下解决下面的问题&#xff0c;说明你的思维调试能力又进阶了。 问题 我在调用 FormatMessage 函数加载一个插入的资源字符串&#xff0c;由于某种未知的原因&#xff0c;它没能按预期那样工作。 我要加载的字符串类似于这样的 “Blah blah blah %1. Blah blah …

QT中结构体和QbyteArray的转换,可加帧头帧尾

demo源码&#xff1a; #include <QApplication> #include <QDebug> #include <QByteArray>// 头 typedef struct tagEXT_HEADER {unsigned short type 0x5642; }EXT_HEADER;// 数据包格式 typedef struct tagMsgFormat {EXT_HEADER heade…

JavaEE——简单认识JS(Web API)

文章目录 一、认识什么是 WebAPI二、认识事件三、操作元素1. innerHTML 属性2. 获取 / 修改元素内容3. 获取 / 修改 元素属性4. 获取 / 修改 表单元素属性5. 获取 / 修改 样式属性6. 创建 / 删除元素 一、认识什么是 WebAPI 1.什么是API 在我们了解 WebAPI 之前&#xff0c;我们…

MYSQL使用mysqldump备份、复原数据库

参考 添加链接描述 1. 备份数据库 C:\Windows\system32>mysqldump -uroot -p test student>C:\student.sql Enter password: ****2. 备份多个数据库 mysqldump -u root -p --databases test mysql>C:\testandmysql.sql3. 备份所有数据库 mysqldump -u root -p -…

【Python】外网远程登录访问jupyter notebook+pycharm使用ipython

第一步&#xff1a;创建python虚拟环境 conda create -n py3610 python3.6.10第二步&#xff1a;安装ipython pip install ipython pip install ipython notebook第三步&#xff1a;创建 IPython Notebook 服务器配置文件 # 进入python交互shell&#xff0c;设置密码 >&…