blob: ff5e50d494fba9843f333b3724a2c3299c9694f6 (
plain)
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
|
---
title: Function.name
slug: Web/JavaScript/Reference/Global_Objects/Function/name
tags:
- ECMAScript6
- Function
- JavaScript
- Property
translation_of: Web/JavaScript/Reference/Global_Objects/Function/name
browser-compat: javascript.builtins.Function.name
---
<div>{{JSRef}}</div>
<p><code><strong><em>function</em>.name</strong></code> 속성(property)은 함수 이름을 반환합니다.</p>
<div>{{js_property_attributes(0,0,1)}}</div>
<p>비표준, ES6 이전 구현에서는 설정가능(<code>configurable</code>) attribute도 <code>false</code>였음을 주의하세요.</p>
<h2 id="설명">설명</h2>
<p><code>name</code> 속성은 함수 이름 또는 (ES6 구현 이전) 익명(anonymous) 함수에 대해서는 빈 문자열을 반환합니다:</p>
<pre class="brush: js">function doSomething() {}
console.log(doSomething.name); // logs "doSomething"
</pre>
<p><code>new Function(...)</code> 또는 그냥 <code>Function(...)</code> 구문으로 생성된 함수는 <code>name</code> 속성을 빈 문자열로 설정합니다. 다음 예에서는 익명 함수가 생성되므로 <code>name</code>은 빈 문자열을 반환합니다:</p>
<pre class="brush: js">var f = function() {};
var object = {
someMethod: function() {}
};
console.log(f.name == ''); // true
console.log(object.someMethod.name == ''); // 역시 true
</pre>
<p>ES6 함수를 구현한 브라우저는 익명 함수 이름을 그 구문상 위치로부터 추측할 수 있습니다. 예를 들어:</p>
<pre class="brush: js">var f = function() {};
console.log(f.name); // "f"</pre>
<p>{{jsxref("Operators/Function", "function 식", "", 1)}}에서 이름으로 함수를 정의할 수 있습니다:</p>
<pre class="brush: js">var object = {
someMethod: function object_someMethod() {}
};
console.log(object.someMethod.name); // logs "object_someMethod"
try { object_someMethod } catch(e) { console.log(e); }
// ReferenceError: object_someMethod가 정의되지 않음
</pre>
<p>함수 이름은 바꿀 수 없습니다, 이 속성은 읽기 전용입니다:</p>
<pre class="brush: js">var object = {
// 익명
someMethod: function() {}
};
object.someMethod.name = 'someMethod';
console.log(object.someMethod.name); // 빈 문자열, someMethod는 익명
</pre>
<p>그러나 바꾸려면, {{jsxref("Object.defineProperty()")}}를 사용할 수 있습니다.</p>
<h2 id="예">예</h2>
<p>객체의 'class'를 확인하기 위해 <code>obj.constructor.name</code>을 사용할 수 있습니다:</p>
<pre class="brush: js">function a() {}
var b = new a();
console.log(b.constructor.name); // logs "a"
</pre>
<h2 id="specifications">명세</h2>
<p>{{Specifications}}</p>
<h2 id="browser_compatibility">브라우저 호환성</h2>
<p>{{Compat}}</p>
|