We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
ECMAScript函数对象封装了在词汇环境中关闭的参数化ECMAScript代码,并支持对该代码的动态评估。ECMAScript 函数对象 是普通对像,和其他普通对象一样有相同的内置插槽和内部方法。ECMAScript 函数对象 代码可能是 严格模式 也可能是 非严格模式。
如果ECMAScript 函数对象 的代码是 严格模式,那么该函数称为 strict function。如果是 非严格模式,该函数称为 non-strict function。
以下列出函数对象拥有的额外内置插槽
class
lexical / strict / global
假设函数对象 F。
argumentsList 是一个由ECMAScript语言值组成的 List。和日常开发中接触到的arguments很像。
注意:在第8步中,当 calleeContext 从 执行上下文栈 中移除时,如果它被挂起并保留以供以后由可访问的生成器对象恢复,则不能将其销毁。
假设函数对象 F。argumentsList 可能是一个空 List
给函数对象添加 caller 和 arguments 属性。
注意:为了计算ECMAScript函数而建立的 执行上下文 中,一个新的 函数环境记录 被创建,在该环境记录中实例化每个形式参数的绑定。函数体内的每个声明也被实例化。如果函数的形式参数不包含默认初始值,函数体声明也会在该环境记录中作为参数被实例化。如果参数初始化时存在默认值,那么会为函数体声明创建第二条环境记录。形式参数和函数初始化为 FunctionDeclarationInstantiation 一部分。计算函数体期间初始化所有其它绑定。
B.3.3 提供了该算法的扩展,必须向后兼容 只实现了ECMAScript 2015之前的 ECMAScript版本 的 浏览器。
参数初始化程序可能包含 直接的eval 表达式。这些evals的顶级声明仅在eval代码里可见。14.1.19 中描述了为此类声明创建的环境。
太长了,具体看规范吧。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
函数对象
ECMAScript函数对象封装了在词汇环境中关闭的参数化ECMAScript代码,并支持对该代码的动态评估。ECMAScript 函数对象 是普通对像,和其他普通对象一样有相同的内置插槽和内部方法。ECMAScript 函数对象 代码可能是 严格模式 也可能是 非严格模式。
以下列出函数对象拥有的额外内置插槽
class
构造器lexical / strict / global
所有的ECMAScript函数对象都有一个叫做 [[Call]] 的内部方法。此外如果有 [[Construct]] 内部方法的ECMAScript函数也是构造器!
[[Call]] ( thisArgument, argumentsList )
假设函数对象 F。
OrdinaryCallBindThis ( F, calleeContext, thisArgument ) —— 函数绑定this
省去
[[Construct]] ( argumentsList, newTarget )
假设函数对象 F。argumentsList 可能是一个空 List
OrdinaryFunctionCreate ( functionPrototype, ParameterList, Body, thisMode, Scope ) —— 普通函数创建过程
AddRestrictedFunctionProperties ( F, realm )
SetFunctionName ( F, name [ , prefix ] )
SetFunctionLength ( F, length )
FunctionDeclarationInstantiation ( func, argumentsList )
太长了,具体看规范吧。
The text was updated successfully, but these errors were encountered: