ToPrimitive 内部逻辑规范

ToPrimitive 是包括两个参数的笼统的操纵,一个是 input argument 参数,一个是可选参数 PreferredType,该操纵就是将 input argument 转换为 no-Object type (非 object 范例的值,即js数据范例的5种一般范例)。

为何第二个参数是可选参数,由于在一些必要的情况下须要传入该参数。

在第一个参数为 object 时,ToPrimitive 有能够将该 object 转换不止一种基础范例的值。

可选参数 hint PreferredType 肯定地将其转换为一种范例

input argument 转换为 non-Object type 遵照下表

input TypeResult
Undefinedinput argument
Nullinput argument
Booleaninput argument
Numberinput argument
Stringinput 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

    原文作者:_ipo
    原文地址: https://segmentfault.com/a/1190000013407859
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞