资讯专栏INFORMATION COLUMN

ToPrimitive 内部逻辑标准

chanthuang / 2004人阅读

摘要:是包含两个参数的抽象的操作,一个是参数,一个是可选参数,该操作就是将转换为非类型的值,即数据类型的种普通类型。在第一个参数为时,有可能将该转换不止一种基本类型的值。

ToPrimitive 是包含两个参数的抽象的操作,一个是 input argument 参数,一个是可选参数 PreferredType,该操作就是将 input argument 转换为 no-Object type (非 object 类型的值,即js数据类型的5种普通类型)。
为什么第二个参数是可选参数,因为在一些必要的情况下需要传入该参数。
在第一个参数为 object 时,ToPrimitive 有可能将该 object 转换不止一种基本类型的值。
可选参数 hint PreferredType 确定地将其转换为一种类型
input argument 转换为 non-Object type 遵循下表
input Type Result
Undefined input argument
Null input argument
Boolean input argument
Number input argument
String input argument
Object 忽略 第二个参数 hint PreferredType 直接调用内置方法 [[DefaultValue]]
[[DefaultValue]]

标准里提到,分别携带参数 "toString"/"valueOf" 调用内置方法 [[Get]] 获取传入的参数,再通过调用 IsCallable 方法判断其是否有 [[call]] 方法采取调用 [[call]] 再次拿到 primitiveValue

通俗地理解就是,分类讨论 + 递归调用,将所有的 Object 转换为 non-Object

参考:
http://es5.github.io/#x9.1
http://es5.github.io/#x8.12.8
http://es5.github.io/#x9.11

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92960.html

相关文章

  • JavaScript类型转换原理

    摘要:其实这三个函数不仅仅可以当作构造函数,它们可以直接当作普通的函数来使用,将任何类型的参数转化成原始类型的值其实这三个函数用于类型转换的时候,调用的就是内部的方法这里解释一下的过程执行执行内部函数执行因为不是原始类型,进入下一步。 本文修改自本人以前写的文章。 从类型说起 js只有7种类型: 原始类型(primitives types) boolean number 包括Infi...

    lewif 评论0 收藏0
  • es String 内部实现逻辑标准

    摘要:返回值类型是根据传入的值是否为空字符串,选择性调用方法代码是一个抽象的操作,将传入的参数值转换为类型的值,这一过程是参照一个规则进行,规则如下表传入参数的类型返回的结果返回参数值参考下面详细阐述调用方法,返回详细阐述类型包括特殊的数值,还包 String(value) 返回值类型是 string value 根据传入的值是否为空字符串,选择性调用 ToString(value) 方法...

    Jingbin_ 评论0 收藏0
  • ES6 Symbol - 一些重要的Symbol属性

    摘要:是一个布尔值,用于确定当调用数组的方法时,如果传入参数是一个数组,是否需要将这个数组拍平。与其他的属性不同的是,并不默认出现在标准对象中。 ECMAScript 6 通过在原型链上定义与Symbol相关的属性来暴露语言内部逻辑,使得开发者可以对一些语言的默认行为做配置。接下来我们来看看有哪些重要的Symbol属性可供我们使用: 1: Symbol.hasInstance 一个在执行 i...

    Barrior 评论0 收藏0
  • JS中的关系比较与相等比较运算

    摘要:在中的关系比较运算,指的是像这种大小值的关系比较。而相等比较,可区分为标准相等比较与严格相等比较两大种类。 在JS中的关系比较(Relational Comparison)运算,指的是像x < y这种大小值的关系比较。 而相等比较,可区分为标准相等(standard equality)比较x == y与严格相等(strict equality)比较x === y两大种类。严格相等比较会...

    paraller 评论0 收藏0
  • 前端面试中遇到 [] == ![] ? 刨祖坟式博客解析,从 ECMAScript 规范说起,比脱下

    摘要:这种情况,它们返回一个布尔型值。语法描述逻辑非如果能转换为,返回如果能转换为,则返回。转中能够转换为的字面量是可枚举的,包含空字符串。 博客 github 地址: https://github.com/HCThink/h-blog/blob/master/interesting/in5.md github 首页(star+watch,一手动态直达): https://github....

    codeGoogle 评论0 收藏0

发表评论

0条评论

chanthuang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<