Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

重学js —— 基本对象:Error 对象 #110

Open
lizhongzhen11 opened this issue May 22, 2020 · 0 comments
Open

重学js —— 基本对象:Error 对象 #110

lizhongzhen11 opened this issue May 22, 2020 · 0 comments
Labels
js基础 Good for newcomers 重学js 重学js系列 规范+MDN

Comments

@lizhongzhen11
Copy link
Owner

Error 对象

Error 构造器

  • 即固有对象 %Error%
  • 全局对象 "Error" 属性的初始值
  • 当作为普通函数而不是构造器调用时,创建并初始化新的Error对象。但是直接使用 Error(…)new Error(…) 效果相同
  • 被设计成子类。它可以用作类定义的 extends 子句的值。打算继承指定的 Error 行为的子类构造函数必须包括对 Error 构造函数的 super 调用,以创建和初始化具有内置插槽 [[ErrorData]] 的子类实例。

Error ( message )

  1. 如果 NewTargetundefined,定义 newTarget活跃函数对象;否则定义 newTargetNewTarget
  2. 定义 O? OrdinaryCreateFromConstructor(newTarget, "%Error.prototype%", « [[ErrorData]] »)
  3. 如果 message 不是 undefined
    1. 定义 msg? ToString(message)
    2. 定义 msgDesc 为属性描述符 { [[Value]]: msg, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
    3. 执行 ! DefinePropertyOrThrow(O, "message", msgDesc)
  4. 返回 O

Error 构造器属性

Error.prototype

初始值为 %Error.prototype%

属性描述符为 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

Error 原型对象属性

  • 即固有对象 %ErrorPrototype%
  • 属于 普通对象
  • 不是 Error 实例且没有 [[ErrorData]] 内置插槽
  • [[Prototype]] 内置插槽,其值为 %Object.prototype%

Error.prototype.constructor

初始值为 %Error%

Error.prototype.message

初始值为空字符串

Error.prototype.name

初始值为 "Error"

Error.prototype.toString ( )

  1. 定义 Othis
  2. 如果 O 不是对象,抛 TypeError 异常
  3. 定义 name? Get(O, "name")
  4. 如果 nameundefined,设置 name"Error";否则设置 name? ToString(name)
  5. 定义 msg? Get(O, "message")
  6. 如果 msgundefined,设置 msg 为空字符串;否则设置 msgToString(msg)
  7. 如果 name 为空字符串,返回 msg
  8. 如果 msg 为空字符串,返回 name
  9. 返回 name,**0x003A(冒号)**码位, **0x0020(空白符)**码位以及 msg 的字符串拼接

Error 实例对象属性

继承自Error原型对象的普通对象,具有 [[ErrorData]] 内置插槽其值为 undefined[[ErrorData]] 的唯一用途是将Error和 NativeError 实例标识为Object.prototype.toString中的Error对象。

本标准中使用的错误类型

NativeError 对象结构

看原规范吧

@lizhongzhen11 lizhongzhen11 added js基础 Good for newcomers 重学js 重学js系列 规范+MDN labels May 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js基础 Good for newcomers 重学js 重学js系列 规范+MDN
Projects
None yet
Development

No branches or pull requests

1 participant