1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
---
title: Függvény
slug: Web/JavaScript/Reference/Global_Objects/Függvény
tags:
- Függvény
- JavaScript
- Osztály
translation_of: Web/JavaScript/Reference/Global_Objects/Function
---
<div>{{JSRef}}</div>
<p>Minden JavaScript függvény tulajdonképpen egy <code>Function</code> objektum. Ez látható a következő kódnál, amely igazat ad vissza: <code>(function(){}).constructor === Function</code>.</p>
<h2 id="Konstruktor">Konstruktor</h2>
<dl>
<dt>{{jsxref("Function/Function", "Function()")}}</dt>
<dd>Létrehoz egy új <code>Function</code> objektumot. A konstruktor közvetlen meghívásával dinamikusan hozhatók létre függvények, de ez biztonsági és az {{jsxref("eval")}}hoz hasonló (de sokkal kevésbé jelentős) teljesítménybeli problémáktól szenved. Viszont, az evaltól ellentétben, a <code>Function</code> konstruktor olyan függvényeket hoz létre, melyek mindig a globális hatókörben hajtódnak végre.</dd>
</dl>
<h2 id="Példánytulajdonságok">Példánytulajdonságok</h2>
<dl>
<dt>{{jsxref("Function.arguments")}}</dt>
<dd>A függvénynek átadott argumentumokból álló tömb.<br>
A {{jsxref("Function")}} elavult tulajdonsága. Helyette az {{jsxref("Functions/arguments", "arguments")}} objektum (a függvényen belül érhető el) használandó.</dd>
<dt>{{jsxref("Function.caller")}}</dt>
<dd>A jelenleg futó függvényt meghívó függvényt adja meg.<br>
Ez a tulajdonság elavult, és csak egyes nem szigorú függvényekben működik.</dd>
<dt>{{jsxref("Function.displayName")}}</dt>
<dd>A függvény megjelenítendő neve.</dd>
<dt>{{jsxref("Function.length")}}</dt>
<dd>Megadja a függvény által várt argumentumok számát.</dd>
<dt>{{jsxref("Function.name")}}</dt>
<dd>A függvény neve.</dd>
</dl>
<h2 id="Példánymetódusok">Példánymetódusok</h2>
<dl>
<dt>{{jsxref("Function.prototype.apply()", "Function.prototype.apply(<var>thisArg</var> [, <var>argsArray</var>])")}}</dt>
<dd>Meghív egy függvényt, és beállítja a <code>this</code> értékét a megadott <code><var>thisArg</var></code> értékre. Az argumentumok {{jsxref("Array")}} objektumként adhatók át.</dd>
<dt>{{jsxref("Function.prototype.bind()", "Function.prototype.bind(<var>thisArg</var>[, <var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]]])")}}</dt>
<dd>Létrehoz egy új függvényt, amely meghívásakor beállítja a <code>this</code> értékét a megadott <code><var>thisArg</var></code> értékre. Az opcionálisan megadható argumentumsor az új függvény meghívásakor átadott argumentumok elé lesz fűzve.</dd>
<dt>{{jsxref("Function.prototype.call()", "Function.prototype.call(<var>thisArg</var>[, <var>arg1</var>, <var>arg2</var>, ...<var>argN</var>])")}}</dt>
<dd>Meghív egy függvényt, és beállítja a <code>this</code> értékét a megadott értékre. Az argumentumok egyszerűen átadhatók.</dd>
<dt>{{jsxref("Function.prototype.toString()", "Function.prototype.toString()")}}</dt>
<dd>Visszaadja a függvény forráskódját ábrázáló karakterláncot.<br>
Felülírja a {{jsxref("Object.prototype.toString")}} metódust.</dd>
</dl>
<h2 id="Példák">Példák</h2>
<h3 id="Különbség_a_Function_konstruktor_és_a_függvénydeklaráció_között">Különbség a Function konstruktor és a függvénydeklaráció között</h3>
<p>A <code>Function</code> konstruktorral létrehozott függvények nem hoznak létre zárványt a létrehozási környezetükhöz, mindig a globális hatókörbe kerülnek. Futtatáskor csak a saját helyi változóit és a globálisakat éri el, a <code>Function</code> konstruktor meghívásakor aktív hatókörben szereplőket nem. Ez különbözik az {{jsxref("eval")}} függvénykifejezésen történő használatától.</p>
<pre class="brush: js notranslate">var x = 10;
function createFunction1() {
var x = 20;
return new Function('return x;'); // az |x| a globális |x|-et jelenti
}
function createFunction2() {
var x = 20;
function f() {
return x; // ez az |x| a fent lévő helyi |x|-et jelenti
}
return f;
}
var f1 = createFunction1();
console.log(f1()); // 10
var f2 = createFunction2();
console.log(f2()); // 20
</pre>
<p>A kód működik a webböngészőkben, de az <code>f1()</code> <code>ReferenceError</code> hibát okoz Node.js-ben, mert az <code>x</code> nem található. Ez azért van, mert a Node legfelső szintű hatóköre nincs a globális hatókörben, és az <code>x</code> a modulra nézve helyi változó lesz.</p>
<h2 id="Specifikációk">Specifikációk</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-function-objects', 'Function')}}</td>
</tr>
</tbody>
</table>
<h2 id="Böngészőkompatibilitás">Böngészőkompatibilitás</h2>
<div>
<div class="hidden">Az oldalon lévő kompatibilitási táblázat strukturált adatokból készül. Ha közreműködnél az adatokban, akkor keresd fel a <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> tárolót, és küldj beolvasztási kérést.</div>
<p>{{Compat("javascript.builtins.Function")}}</p>
</div>
<h2 id="Lásd_még">Lásd még:</h2>
<ul>
<li>{{jsxref("Functions", "Függvények és függvényhatókör")}}</li>
<li>{{jsxref("Statements/function", "function utasítás")}}</li>
<li>{{jsxref("Operators/function", "function kifejezés")}}</li>
<li>{{jsxref("Statements/function*", "function* utasítás")}}</li>
<li>{{jsxref("Operators/function*", "function* kifejezés")}}</li>
<li>{{jsxref("AsyncFunction")}}</li>
<li>{{jsxref("GeneratorFunction")}}</li>
</ul>
|