A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/toString below:

Function.prototype.toString() - JavaScript | MDN

Function 对象重写了从 Object 继承来的 toString() 方法,而没有继承 toString。对于用户定义的 Function 对象,toString 方法返回一个字符串,其中包含用于定义函数的源文本段。

当 Function 需要表示为文本值时,JavaScript 会自动调用函数的 toString 方法,例如:函数与一个字符串进行拼接。

若 this 不是 Function 对象,则 toString() 方法将抛出 TypeError 异常("Function.prototype.toString called on incompatible object")。

Function.prototype.toString.call("foo"); // 抛出 TypeError

如果在内置函数对象上调用 toString() 方法,或者在由 Function.prototype.bind() 创建的函数以及在其他非 JavaScript 函数上调用 toString(),那么 toString() 将返回一个看起来像原函数的字符串,类似于:

function someName() { [native code] }

对于内部对象方法和函数,someName 是函数的初始名称;否则其可能是实现定义(implementation-defined)的,但始终以属性名称语法的形式呈现,如:[1 + 1]、someName 或 1。

备注: 这意味着对原生函数的字符串调用 eval() 将始终产生语法错误。

若是在由 Function 构造函数生成的函数上调用 toString(),则 toString() 返回创建后的函数源码,包括形参和函数体,函数名为“anonymous”。例如:对于 Function("a", "b", "return a + b").toString(),则会返回:

function anonymous(a,b
) {
return a + b
}

从 ES2018 开始,规范要求 toString() 的返回值与声明的源代码完全相同,包括空格和注释;或者因某种原因,主机没有源代码,则要求返回一个原生函数字符串。参见兼容性表格以查询对这一修改后的行为的支持情况。


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4