ToPrimitive原理

ops/2024/10/19 17:31:47/

在 JavaScript 中,ToPrimitive 方法是一个抽象操作,用于将一个值转换为对应的原始值。当 JavaScript 引擎需要将一个非原始值转换为原始值时,会调用 ToPrimitive 方法。

ToPrimitive 方法接收两个参数:输入值和首选类型(可选)。首选类型用于指定转换后的原始值类型,可以是 “number”、“string” 或者默认值 “default”。如果不提供首选类型,则默认为 “default”。

ToPrimitive 方法执行的步骤如下:

  1. 如果输入值已经是原始值,则直接返回该值。
  2. 否则,调用输入值的 valueOf() 方法。如果该方法返回一个原始值,则将其作为结果返回。
  3. 否则,调用输入值的 toString() 方法。如果该方法返回一个原始值,则将其作为结果返回。
  4. 否则,抛出一个 TypeError 异常。

这个方法通常在 JavaScript 引擎内部使用,例如在执行比较操作符时,需要将对象转换为原始值。

ToPrimitive 方法中,type 参数指定了转换后的目标类型,可以是 "number""string"。这两种类型的区别在于最终转换的结果会有所不同:

  • type 参数为 "number" 时,ToPrimitive 方法会尝试首先调用对象的 valueOf() 方法,如果返回的是一个原始值,则直接将其作为结果返回;否则再调用对象的 toString() 方法,再根据返回值转换为数字类型的结果。

  • type 参数为 "string" 时,ToPrimitive 方法会尝试首先调用对象的 toString() 方法,如果返回的是一个原始值,则直接将其作为结果返回;否则再调用对象的 valueOf() 方法,再根据返回值转换为字符串类型的结果。

所以,区别在于对 valueOf()toString() 方法的调用顺序不同,从而影响了最终的转换结果。


http://www.ppmy.cn/ops/15709.html

相关文章

LM324的输出VOL与IOL你注意过吗?

电路图 途中LMC6084 更改为LM324 故障现象 这个电路的输入输出表达式为 R30 两端电压等于0V 当J16 的4脚与2脚相等,等于5V(或者4脚略大于2脚时)7脚输出 约 500mV; 实际应该为0V左右才对.见下图 故障原因 上图运放输出低电平…

php跨域和https访问http问题分析

1、https的web访问http地址的资源 问题:请求状态status(canceled) 解决办法:把资源地址改成https的 /*** HTTP地址改成HTTPS地址* param $url*/ function changeHttp2Https(&$url){if(stripos($url, http://) ! false){$url str_replace(http…

Docker中Kafka容器创建/更新Topic支持多分区

前提 自行通过docker部署好kafka&#xff0c;并启动相关容器。 假设Topic为http_capture。 #docker-kafka kafka_dir/opt/docker/kafka/build sudo rm -rf ${kafka_dir}/* cat > ${kafka_dir}/docker-compose.yml <<EOF version: "3.3" services:zookeepe…

企业实施定制鞋厂ERP软件需要注意哪些问题?

企业实施定制鞋厂ERP软件是个复杂的管理系统工程&#xff0c;为了成功地为企业定制实施ERP软件&#xff0c;需要注意和解决几个关键的问题&#xff1a; . 确立ERP系统实施和定制的决策者&#xff1b;. 做好前期咨询与调研工作&#xff1b;. 做好系统产品或项目迭代规划&#x…

Node.js身份核验接口、身份证二、三要素实名认证接口

随着互联网的高速发展&#xff0c;人们可以发表言论的渠道越来越多。网络平台不断汲取各地、各人、各时发表的各种信息。人们喜欢将信息发布到微博、知乎、天涯、豆瓣等等网络平台&#xff0c;逐步的&#xff0c;网络信息进入大爆炸时代。这些大量涌现的信息中难免掺杂着一些不…

Linux export指令设置环境变量不生效

应用启动需要设置环境环境&#xff0c;但是环境变量的名字中包含点&#xff0c;而export的命令是不支持多带点的环境变量的&#xff0c;但是应用没法更改。此时可以使用如下命令 # env -i "a.b.c123" "a b c123" " 123" sh -c "env" …

python 批量压缩文件并生成解压密码

第一步&#xff1a;安装必要的Python库 你需要安装Python和一个名为py7zr的库&#xff0c;后者用于处理7z压缩文件。你可以通过以下命令安装这个库&#xff1a; pip install py7zr第二步&#xff1a;创建Python脚本 以下是一个Python脚本的示例&#xff0c;它将遍历指定目录…

CTF网络安全大赛详情

网络安全已成为现代社会的一个关键挑战&#xff0c;随着互联网技术的飞速发展&#xff0c;从个人隐私保护到国家安全&#xff0c;网络安全的重要性日益突显。为了应对这一挑战&#xff0c;CTF&#xff08;Capture The Flag&#xff0c;中文&#xff1a;夺旗赛&#xff09;应运而…