gpt4 book ai didi

javascript - 访问函数对象的上下文属性 |如何?

转载 作者:行者123 更新时间:2023-11-30 18:20:12 28 4
gpt4 key购买 nike

每个函数对象都应该有两个“隐藏”属性(根据 JavaScript 优秀部分,函数章节)

context

code

有没有办法访问这些属性?

最佳答案

好吧,您可以很容易地访问函数代码 - 通过使用 toString() (或 Mozilla 的非标准 toSource() ):

var x = function() { alert('Here is my happy function'); };
console.log(x.toString());

至于上下文,我想 DC 的意思不仅仅是简单的 this,而且实际上写了关于执行上下文。

更新:在 ES5 specification 中发现了一个有趣的片段,这两个属性实际上是在一些细节中描述的——而不是作为抽象概念:

13.2 Creating Function Objects

Given an optional parameter list specified by FormalParameterList, a body specified by FunctionBody, a Lexical Environment specified by Scope, and a Boolean flag Strict, a Function object is constructed as follows:

...

Set the [[Scope]] internal property of F to the value of Scope.

...

Set the [[Code]] internal property of F to FunctionBody.

同时:

Lexical Environments and Environment Record values are purely specification mechanisms and need not correspond to any specific artefact of an ECMAScript implementation. It is impossible for an ECMAScript program to directly access or manipulate such values.

所以我想这就解决了有关访问函数的 Scope 属性的问题。

至于 Code 属性,它使用 toString() 的只读访问,正如 Matt 正确注意到的那样,是依赖于实现的——但比实现更频繁不是。 )

关于javascript - 访问函数对象的上下文属性 |如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268934/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com