Javascript函数'的属性,该属性包含其代码

Javascript function's property that contains its code

本文关键字:属性 包含其 代码 函数 Javascript      更新时间:2024-01-28

我是Javascript的新手。我以前上过一门课,我试图记住一个概念,即所有函数都是将包含属性的对象,该属性将包含该函数内部编写的代码和另一个包含函数名称的属性。

我尝试了一下,发现名称属性如下。但无法找到代码属性。这真的存在吗?否则我可能错了。

console.log(
  (function f() {
    a = 1
  }.name)
)

所以该属性应该返回

a=1

什么都不想做。我正在复习我的JS,因为我想学习角度。

但无法找到代码属性。这真的存在吗?否则我可能错了。

它在概念上存在,但它是内部属性,不能从用户代码访问。它被称为[[ECMAScriptCode]]。有关详细信息,请参见规范。

然而,在现实中,浏览器可以以他们想要的任何方式实现功能,只要它们的行为符合规范中的描述


您可以在用户代码中调用函数的toString方法。这将返回函数本身的字符串表示,尽管确切的表示取决于实现。

我相信您正在寻找以下内容:

function f(){
    console.log("a = 1");
};
console.log(f.toSource());
console.log(f.toString());

https://jsfiddle.net/agraymd/ar5hgkv8/1/

.toSource不是标准功能。来自MDN:

此功能是非标准的,不在标准轨道上。不要在面向Web的生产网站上使用它:它不会适用于所有人使用者在实现和行为可能在未来发生变化。

function.toSring();似乎是一个更好的选择,这是一个标准特性。点击此处了解更多信息:

.toString();

尝试f.toString(),其中f是您希望获得的源代码的函数。