Function
构造函数
creates a new
Function
object
. Calling the constructor directly can create functions dynamically, but suffers from security and similar (but far less significant) performance issues to
eval
。不管怎样,不像 eval,
Function
constructor creates functions which execute in the global scope only.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
new Function([arg1 [, arg2 [, ...argN]] ,] functionBody)
arg1
,
arg2
, ...
argN
x
", "
theValue
"—or "
x,theValue
".
functionBody
A string containing the JavaScript statements comprising the function definition.
Function
objects created with the
Function
constructor are parsed when the function is created. This is less efficient than declaring a function with a
函数表达式
or
function statement
and calling it within your code because such functions are parsed with the rest of the code.
All arguments passed to the function are treated as the names of the identifiers of the parameters in the function to be created, in the order in which they are passed. Omitting an argument will result in the value of that parameter being
undefined
.
援引
Function
构造函数作为函数 (不使用
new
运算符) 有相同效果若把它作为构造函数进行援引。
The following code creates a
Function
object that takes two arguments.
// Example can be run directly in your JavaScript console
// Create a function that takes two arguments, and returns the sum of those arguments
const adder = new Function('a', 'b', 'return a + b');
// Call the function
adder(2, 6);
// 8
The arguments "
a
" and "
b
" are formal argument names that are used in the function body, "
return a + b
".
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'Function constructor' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Function()
构造函数
|
Chrome 1 | Edge 12 | Firefox 1 | IE 4 | Opera 3 | Safari 1 | WebView Android 1 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 | Safari iOS 1 | Samsung Internet Android 1.0 | nodejs Yes |
完整支持
Function
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()